[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Снова про MVC
AbrakadabrA
Здравствуйте. Кто-нибудь может на простом примере показать реализацию mvc, так сказать, объяснить на пальцах ?! В теории все понятно, читал инфу на вики и многих других форумах и сайтах, но практически как применить недогоняю...
DmitryOpalev
Как реализовано на Zend:
Обращаешься ты к какому-нибудь адресу, например http://site.ru/blog
В данном случае с Zend`ом ты обращаешься к модулю blog.
В этом модуле есть два класса каждый в своих файлах и файл вывода: BlogController в BlogController.php, BlogModel в BlogModel.php и BlogView.php.
Когда ты обращаешься к этому адресу, Фреймворк (Zend) использует некоторый метод (indexAction())в классе BlogController. В этом методе, собственно, и начинается кодинг. Ты принимаешь данные, проверяешь их как-нибудь, выбираешь дальнейший путь программы.
На этом этапе тебе понадобятся некоторые методы, присущие только этому модулю. Все эти методы хранятся в классе BlogModel. Это могут быть методы, например, возвращающие список статей, комментариев и т.д. Тогда в контроллере ты пишешь примерно следующее:
$model = new BlogModel();

Чтобы получить все статьи делаем примерно следующее:
$articles = $model->getArticles();

И остается только отправить эти данные на вывод:
$this->view = $articles;

Все, дело за малым. Эти данные теперь доступны в файле BlogView.php, в котором минимум PHP-кода, разве что циклы для вывода массива данных.

_____________
Курс валют
AbrakadabrA
Спасибо за помощь. Все начинает проясняться )
Правильно ли я понимаю, что когда данные передаются в Вид, в данном примере BlogView.php, то там я формирую готовые блоки страницы, вставляю в шаблон и вывожу его? И еще вопрос, если первое утверждение верно, то может ли Вид быть один для всего сайта ?
DmitryOpalev
AbrakadabrA
Цитата
Правильно ли я понимаю, что когда данные передаются в Вид, в данном примере BlogView.php, то там я формирую готовые блоки страницы, вставляю в шаблон и вывожу его

Да, верно.
Цитата
может ли Вид быть один для всего сайта

Речь идет о шаблоне? smile.gif

_____________
Курс валют
chee
Контролер трогает модель и вьюхи, устанавливает состояние модели и вызывает ее методы. Модель ни кого не трогает, кроме своих собратьев, а также умеет отдавать данные, умеет много чего делать. Вьюха получает на вход модель из которой запрашивает данные, может вызывать у вьюхи методы на получение данных, не рекомедуется вызывать методы на выполнение обработки данных, так как это должен делать контроллер.

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
AbrakadabrA
Цитата
Речь идет о шаблоне?  smile.gif

Нет. В шаблоне у меня основной каркас сайта с неменяющимся контентом - шапка, подвал еще что-то... Вопрос в другом. К примеру у меня есть 2 страницы, Блог и Контакты. Для каждой страницы есть контроллер и модель. Могут ли модели обеих страниц выводить данные через одну Вьюху ? То есть она для них будет общая ?!
DmitryOpalev
AbrakadabrA
Конечно можно. Можно все что угодно) Кроме множественного наследования.
Как организовать такое скажем, в зенде я не знаю, а если программа самописная, можно предусмотреть и такой функционал, проблемы появятся только на уровне логики и разработки архитектуры.


_____________
Курс валют
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.