PHP MVC + проблема с роутером и перенаправлением - PullRequest
0 голосов
/ 13 сентября 2010

У меня есть странная проблема, которую я не могу на всю жизнь выяснить.Прежде всего, я разработал PHP MVC Framework с нуля.У меня проблема в том, что я получаю выполнение перенаправления заголовка после вызова exit ().

Вот представление высокого уровня процесса маршрутизации:

  1. REQUEST_URI удаленкроме того, запрашиваемый контроллер, метод и любые аргументы устанавливаются равными переменным, которые будут использоваться позже в скрипте.
  2. router.php проверяет, существует ли запрошенный контроллер на самом деле, если его тогда нетон возвращает ложь, но если все проверяется, то он возвращает истину
  3. Если он возвращает истину, он выполняет запрошенный контроллер, метод и любые аргументы.
  4. Если он возвращает ложь, маршрутизатор отправитперенаправление на пользовательскую страницу 404.При этом используется функция header () PHP, и после заголовка есть exit () («Location: *»);

В шаге 4 возникает проблема.Запрашиваемый контроллер существует, поэтому он выполняется, и запрошенное представление существует, поэтому оно загружает все правильно, но затем выполняет перенаправление, даже если после успешной загрузки представления вызывается exit ().

Есть ли причина, по которой маршрутизаторбудет продолжать и запустить перенаправление?

1 Ответ

1 голос
/ 13 сентября 2010

Я не собираюсь догадываться (согласно @Tomasz :), но даже если вы exit(), браузер будет уважать любые http-заголовки, которые он получает, включая Location.

На самом деле, что-то подобное я делаю, при любых ошибках я отправляю заголовок перенаправления, а затем делаю exit, чтобы убедиться, что выполнение не продолжается в контроллере после перенаправления.

...