Технология MVC

Темы, не касающиеся фреймворка, но относящиеся к программированию в целом.
Ответить
Аватара пользователя
Одиночка Айс
Сообщения: 267
Зарегистрирован: 2010.02.05, 10:26
Откуда: Алма-Ата, Казахстан
Контактная информация:

Технология MVC

Сообщение Одиночка Айс » 2010.03.24, 13:50

Итак, вчера на работе задался вопросом, а правильно ли я "говнокодю", опираясь на технологию MVC??? Вопрос к тому, что я все делаю во view-файлах, а именно: читаю данные от пользователя, делаю выборку из БД, описываю там же логику и делаю вывод на страницу. Таким образом, например views/view.php, превращается в файл с более чем сотней строчками кода. Приведу простой пример:
1. От пользователя приходят данные;
2. Проверяем, являются ли они float или integer, если нет, то приводим к ним;
3. Округляем полученные данные до сотых;
4. Вычисляем коэффициент, разделив на 100;
5. Приводим получившееся значение к "цифровому" типу данных (это так, на всякий случай);
6. Проверяем, попадает ли значение в определенный диапазон (это чистая логика, типа равен ли 0 или 1, и лежит ли в диапазоне от 0 до 1);
7. Осуществляем вывод после логики.

1) Контроллер - получает данные от внешнего скрипта и отдает их модели;
2) Модель - проверяет данные и производит вычисления, отдает результат контроллеру;
3) Контроллер - отдает виду полученные от модели данные для представления.
Идем дальше. Итак, за прием данных отвечает контроллер, за вычисления и логику отвечает модель, за вывод - вью. Если ошибся в чем-то, просьба поправить меня.

А теперь самый главный вопрос: Как описать это все не в одном файле, а используя логику MVC? Писать функции в контроллере и модели? По каким законам и используя какие правила и каноны?
Последний раз редактировалось Одиночка Айс 2010.03.24, 15:07, всего редактировалось 1 раз.
Ни любви, ни тоски, ни жалости...

sshz
Сообщения: 28
Зарегистрирован: 2010.03.17, 12:26

Re: Технология MVC

Сообщение sshz » 2010.03.24, 14:11

а в чем проблема?

Данные от пользователя попадают в контроллер, контроллер их отдает в модель Model::model->calc($_GET['var'])

Модель считает, проверяет логику, делает все грязную работу и отдает готовый к выводу массив или строку обратно в контроллер, а там отдаем во view, где у нас уже чисто вывод.

Можно немного действий переложить на контроллер и view например пункт 2 оставить в контроллере а пункт 6 во view, от этого mvc никуда не уйдет, просто в некоторых случаях удобнее например проверку делать в модели а в некоторых во view.

Еще иногда, пока никто не видит, можно брать данные во view прямо из модели типа foreach(Model::model()->findAll))

Я так вижу mvc

Аватара пользователя
Одиночка Айс
Сообщения: 267
Зарегистрирован: 2010.02.05, 10:26
Откуда: Алма-Ата, Казахстан
Контактная информация:

Re: Технология MVC

Сообщение Одиночка Айс » 2010.03.24, 14:16

1. Контроллер не работает с базой, так как имя БД появляется только в модели;
2. Модель не может проверить данные перед сохранением, так как они сэйвятся в контроллере;
3. Как инклудить один файл с внутренними настройками сайта так, чтобы эти данные были доступны из любой точки создаваемого приложения?
Ни любви, ни тоски, ни жалости...

sshz
Сообщения: 28
Зарегистрирован: 2010.03.17, 12:26

Re: Технология MVC

Сообщение sshz » 2010.03.24, 15:11

1. И не должен
2. Данные в любом случае сохраняются моделью, даже если ->save() вызывается в контроллере, можно проверять данные при помощи beforeSave или в контроллере использовать не save а свою функцию модели которая будет проверять и сохранять.
3. Как вариант написать функцию в модели которая будет инклудить настроки или брать их из базы и отдавать в любом месте по Model::model()->settings() или можно написать компонент-хелпер делающий то же самое и тоже везде доступный по Helper::settings()

Аватара пользователя
Одиночка Айс
Сообщения: 267
Зарегистрирован: 2010.02.05, 10:26
Откуда: Алма-Ата, Казахстан
Контактная информация:

Re: Технология MVC

Сообщение Одиночка Айс » 2010.03.24, 18:13

по третьему пункту спасибо, буду пробовать :)
Ни любви, ни тоски, ни жалости...

Аватара пользователя
Caveman
Сообщения: 152
Зарегистрирован: 2009.04.04, 20:56
Откуда: Москва
Контактная информация:

Re: Технология MVC

Сообщение Caveman » 2010.03.24, 21:17

3. А чем не устраивает вариант Yii::app()->params ?

Аватара пользователя
Одиночка Айс
Сообщения: 267
Зарегистрирован: 2010.02.05, 10:26
Откуда: Алма-Ата, Казахстан
Контактная информация:

Re: Технология MVC

Сообщение Одиночка Айс » 2010.03.25, 10:07

Кабы я бы знал как курить это, хотя вроде нашел ссылку. Буду изучать ))
Ни любви, ни тоски, ни жалости...

Ответить