MVC (PHP): сопоставляются ли контроллеры/действия с каждым запросом?

Я разобрался с MVC (на PHP) с помощью Zend. Насколько я понимаю Zend Framework, каждый тип пользовательского запроса сопоставляется с определенным контроллером (который, в свою очередь, может сопоставляться или не сопоставляться с моделью), а каждое действие сопоставляется с представлением. Я заметил ту же закономерность в Codeigniter и Kohana, а также в некоторой степени в Symfony. По сути, URL-адрес отображается следующим образом:

www.domain.com/index.php/CONTROLLER/ACTION/...additional parameters...

Всегда ли так с MVC? Чем это отличается от Page Controller как шаблона проектирования?


person sunwukung    schedule 18.10.2009    source источник


Ответы (4)


Zend Framework использует двухэтапное представление. Он очень похож на MVC. Как видите, соответствия между архитектурой и сопоставлением URL не так много.
Если вы хотите узнать о возможных архитектурах, прочитайте PoEAA Мартина Фаулера.

person erenon    schedule 18.10.2009
comment
ZF можно использовать с шаблоном MVC, а для части просмотра он использует двухшаговый шаблон просмотра. - person NDM; 19.10.2009

Я думаю, что основное отличие заключается в том, что с шаблоном Page Controller у вас есть отдельный файл для каждой страницы вашего сайта. В типичной реализации MVC в PHP вы можете сгруппировать общие действия в одном контроллере. Кроме того, типичная реализация MVC в PHP поддерживает пользовательскую маршрутизацию, позволяющую создавать пользовательские карты для контроллеров/действий без необходимости использования перезаписей http-сервера.

person Chris Gutierrez    schedule 18.10.2009

1-"Это всегда так с MVC?

www.domain.com/index.php/CONTROLLER/ACTION/...дополнительные параметры..."

Нет, не всегда вы можете расширить маршрутизацию на основе домена (например):

ДОМЕН.ДВУ/ПОЛЬЗОВАТЕЛЬ будет USER.DOMAIN.TLD

2-Я думаю, но я не уверен на 100%, что контроллер страницы является подмножеством шаблона MVC. Я имею в виду Контроллер страницы = ТОЛЬКО контроллер!!!

person tawfekov    schedule 18.10.2009

Да, это наиболее распространенное использование uris. Но там говорится, что вы не можете использовать шаблон MVC с (ир) обычным uris. URI типа http://www.domain.tld/?controller=home&action=posts или даже http://www.google.com/search?hl=en&source=hp&q=MVC отлично подойдет.

MVC — это то, как вы структурируете свои слои, и это не отражается в uri.

person alexn    schedule 18.10.2009