Перенаправить или умереть?Эти заявления помогают? - PullRequest
2 голосов
/ 24 августа 2011

Унаследовано приложение Cakephp, которое использует большое количество $this->redirect($url) операторов; все они сопровождаются die(); следующим образом:

$this->redirect($url);
die();

Я могу только предположить, что это какая-то плохая форма перехвата ошибок, но я не понимаю, почему это когда-нибудь понадобится. $this->redirect использует функцию перенаправления URL из моего фреймворка, наше приложение ничего не изменило; если это не сработает, мой фреймворк не сработает, поэтому на всем сайте ничего не получится. Смерть(); операторы очень затрудняют прохождение кода и поиск ожидаемых ошибок (они, конечно, не используют исключения).

Есть ли какая-то причина хранить это? Единственная функциональность, которую я могу себе представить, - это предотвращение выполнения логики за пределами перенаправления в функции, которая не должна была выполняться, но для меня это выглядит как плохое ненужное кодирование.

Ответы [ 4 ]

3 голосов
/ 24 августа 2011

Вы можете прочитать источник. function redirect($url, $status = null, $exit = true) $exit по умолчанию true и @param boolean $exit If true, exit() will be called after the redirect

3 голосов
/ 24 августа 2011

Они полезны. Без die() скрипт выполняется до конца и после этого вы перенаправляетесь.

Представьте себе скрипт с 20 запросами к базе данных. Перед первым запросом у вас есть, например,

if ($_GET['redirNow']){
   $this->redirect($url);
   die();
}

Он не будет выполнять никаких запросов. Без die() он будет выполнять все 20 запросов.

0 голосов
/ 24 августа 2011

Если перенаправление выполняется с помощью header (), то для использования die () есть очень веская причина.По некоторым программным ошибкам, если некоторые данные отправляются в браузер до перенаправления, перенаправление завершится ошибкой.Лучше выйти на этом этапе, чем выполнять остальную часть сценария, который не предназначен для выполнения.

0 голосов
/ 24 августа 2011

Ты прав. Лучше использовать обработчик ошибок и механизм регистрации. Взгляните на эту статью:

http://www.phpfreaks.com/blog/or-die-must-die

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