exit, exit (), exit(0), die (), die(0) - Как выйти из сценария
Я считаю, что все это (и даже die()
или die(0)
) идентичны. Если они не идентичны, что предпочтительнее для успешного выхода из сценария? Если они идентичны, существует ли какой-либо предпочтительный стандарт для указания успешного завершения сценария? Я склонен использовать exit;
.
EDIT: все ответы имеют "die()
и exit()
идентичны", хотя я говорю это в своем вопросе. Я обновил название, чтобы, надеюсь, сделать его более ясным, что это не мой вопрос. Я хочу четко указать успех из сценария командной строки.
6 ответов:
они все одинаковые. Я почти уверен
die()
Это просто прямой псевдоним дляexit()
, но даже если это не так, она все равно действует одинаково.когда одной из этих функций задается строковый аргумент, она выводит строку перед завершением процесса. Когда он встречает целое число под 255, это целое число считается кодом возврата для процесса, который передается обратно в процесс, который вызвал скрипт PHP. Это особенно полезно при написании приложения командной строки (PHP-это не только веб!).
насколько разница между
exit
,exit()
иexit(0)
, там действительно нет. Нет никакой разницы между первыми двумя, потому чтоexit
технически является языковой конструкцией, а не функцией, поэтому ее можно вызывать с круглыми скобками или без них, как иecho
. Возвращает код0
означает "эта программа работает успешно/без ошибок", и хотя я не знаю, что именно происходит, когда вы не проходите аргумент,PHP.net говорит, что аргумент-менееexit
указывает на успех, поэтому я бы поспорил, что он возвращает0
, хотя опять PHP.net не показывает значение по умолчанию для аргумента.
Как уже упоминали несколько человек, die() и exit () - это одно и то же.
Если вы посмотрите на PHP документации, есть два варианта аргументов:
числовое значение. Это полезно только в том случае, если вы используете PHP из командной строки, в отличие от веб-сервера. Нулевое значение указывает на успех. Ненулевое значение указывает на возникновение неисправности.
строковое значение. Это будет отображаться для браузер, когда происходит выход.
вместо die() или exit (), я рекомендую использовать исключения и пользовательский обработчик исключений верхнего уровня для управления условиями отказа.
У вас есть больше гибкости, чтобы делать вещи, как автоматическое ведение журнала ошибок. Кроме того, если вы используете PHP для реализации API JSON, этот обработчик исключений может вместо этого возвращать допустимый фрагмент JSON, указывающий на ошибку.
Я бы сказал, что в связи с семантикой
die($arg);
должен использоваться для ненормального или неожиданного завершения, даже когда-Конечно-вы все еще поймали его. Иexit($arg);
должен использоваться для нормального (ожидаемого / контролируемого) конца процесса, как вbreak;
наfor
илиwhile
илиswitch
структуре, но с окончательным концом.тем не менее .. Я лично часто пользуюсь общим
if { } else { }
структура для того чтобы контролировать различные ветви огромных процессов или выходная буферизация, поэтому не нужно использовать "выход"..Я также использую
die($arg)
в простой семантике ловли ошибок, как в
$db = mysql_connect([$args]) or die ($error);
...
die();
- Это просто синоним дляexit();
и функционально идентичны.стандартный способ-использовать нулевой код выхода для обозначения успеха и все остальное для обозначения состояния ошибки.
die () обычно используется для уничтожения скрипта с выводом ошибки:
die("There was a fatal error");
where-as exit обычно используется как успешный выход (по крайней мере, в моей кодировке)
на руководство PHP говорит, что функции идентичны.
die
в точности эквивалентноexit
.Если status является целым числом, то это значение будет использоваться в качестве статуса выхода..
это полезно только в том случае, если у вас есть какая-то оболочка, которая делает что-то на основе статуса выхода. Если у вас нет конкретной необходимости сообщать код выхода во внешний мир, просто
exit;
.