Является ли использование фронт-контроллера и заголовков лучшим способом для имитации ответа в PHP? - PullRequest
1 голос
/ 12 октября 2008

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

Ответы [ 2 ]

3 голосов
/ 12 октября 2008

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

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

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

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

1 голос
/ 12 октября 2008

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...