2008-10-12 2 views
1

Я изучал фреймворки PHP в конце некоторых личных проектов, и похоже, что большинство из них используют фронт-контроллер для имитации ответа. Контроллер получает параметры из запроса и перенаправляет, отправляя соответствующие заголовки в зависимости от логики. Это «ответ». Это лучший способ сделать это в PHP, или существуют другие теории о том, как обрабатывать перенаправление и ответы?Использует фронт-контроллер и заголовки лучший способ имитировать ответ в PHP?

+0

кажется, что вы используете определенное определение ответа; но я не понимаю, что именно. можете ли вы уточнить, каков ваш контекст? – Javier 2008-10-12 03:09:23

+0

Я думаю об объекте Response как в Java, где вы можете добавлять информацию об атрибутах для принимающей страницы (которая влияет на представление), но также и в смысле MVC, где может возникнуть маршрутизация из-за того, что запрос содержал , – 2008-10-12 03:32:49

ответ

3

Передний контроллер хорошо подходит для веб-окружения, позволяя выполнять любые запросы к вашему приложению. поскольку HTTP не имеет гражданства, и пользователь может в некотором смысле непреднамеренно наткнуться на части вашего приложения случайно (например, ударить случайные URL-адреса), фронт-контроллер позволяет определить точку входа вашего приложения и ответить соответствующим образом.

Редактировать: в ответ на комментарии, я думаю, что путаница может быть в том, что у java есть намного больше структуры, чем PHP, что может быть слишком сложным? в конечном счете, PHP может обеспечить очень простое взаимодействие с просьбы ответ:

switch($_GET['page']) { 
    case "one"; 
     print "page one!"; 
     break; 
    default: 
     print "default page"; 
     break; 
} 

и оттуда вы можете слой в всех видах вещей к контроллерам передних прохождения запроса объекты вниз цепочка фильтров к контроллеру страницы, который перенаправляет на подходящую модель, которая захватывает данные через ваш уровень абстракции db, фильтрует его, обратно до контроллера и на представление, которое строит соответствующий ответ, все время отпуская случайные крючки событий. в конечном счете, вам решать (как разработчик) выбрать уровень сложности/разделения, который вы ищете. это и красота, и злость PHP :)

1

Я думаю, что вы вводите в заблуждение ответ Http с объектом ответа в рамках, на которые вы смотрели. Передний контроллер является шлюзом для вашего приложения - все (http) запросы проходят через него, и он направляется к соответствующему контроллеру/действию. Обработка запроса не требует результатов в возвращаемом ответе (часто запросы предназначены только для отправки информации на сервер), однако все запросы будут проходить через Front Controller.

Объект запроса часто используется для инкапсуляции параметров среды и http-запроса и предоставления API для их получения. Его дополнение, объект ответа, часто используется для инкапсуляции процесса генерации ответа HTTP, включая заголовки генерации.

Существуют и другие подходы к обработке запросов и маршрутизации, которые не являются уникальными для PHP (и ни один из них не является фронт-контроллером), например, для контроллера страниц, или вообще не используют структуру MVC.

Смежные вопросы