Ответы:
Там нет разницы - они одинаковы.
Руководство по PHP для exit:
Примечание. Эта языковая конструкция эквивалентна
die().
Руководство по PHP для die:
Эта языковая конструкция эквивалентна
exit().
dieдля остановок, связанных с ошибками, и exitдля всех других сценариев. Кажется, что при чтении кода это выглядит лучше.
dieписать гораздо быстрее, чем exit... Я начинаю использовать, exitпотому что он более читабелен для не-PHP-программистов, но dieпросто быстрее печатать, когда вы находитесь в спешка. Кроме того, по тому, как я печатаю, мне не нужно менять положение рук, чтобы писать die.
Разница между die()и exit()в PHP заключается в их происхождении .
die()и exit()являются эквивалентными функциями.
Руководство по PHP для die:
Эта языковая конструкция эквивалентна
exit().
Руководство по PHP для exit:
Примечание. Эта языковая конструкция эквивалентна
die().
Руководство по PHP для списка псевдонимов функций :
die()и exit()имеют разные на других языках , но в PHP они идентичны.
Из еще одной PHP-разглагольствования :
Как программист C и Perl, я был готов ответить: «Почему exit () просто спасает программу с числовым состоянием выхода, а die () выводит сообщение об ошибке в stderr и выходит со статусом EXIT_FAILURE. " Но потом я вспомнил, что мы находимся в грязной синтаксической стране PHP.
В PHP exit () и die () идентичны.
Очевидно, дизайнеры подумали: «Хм, давайте заимствуем exit () из C. И, возможно, людям Perl это понравится, если мы возьмем die () также как и из Perl . Ой! У нас есть две функции выхода! Давайте сделаем так, чтобы они оба может взять строку или целое число в качестве аргумента и сделать их идентичными! "
Конечным результатом является то, что на самом деле это не делает вещи более «легкими», просто более запутанными. C и Perl-кодеры будут продолжать использовать exit (), чтобы бросить только целочисленное значение выхода, и die (), чтобы бросить сообщение об ошибке и завершиться с ошибкой. Новички и люди, говорящие на языке «как первый язык», вероятно, зададутся вопросом «ммм, две функции выхода, какую мне использовать?» Руководство не объясняет, почему есть exit () и die ().
В целом, PHP имеет много странной избыточности, подобной этой, - он старается быть дружелюбным к людям, которые происходят из разных языков, но при этом создает избыточную избыточность.
exit()не закрывает соединение, а закрывает die(), кажется актуальным.
Как указано выше, эти две команды создают один и тот же токен синтаксического анализатора.
НО
Есть небольшая разница, и это то, сколько времени занимает парсер, чтобы вернуть токен.
Я не изучал синтаксический анализатор PHP, но если это длинный список функций, начинающийся с «d», и более короткий список, начинающийся с «e», то должен быть временной штраф при поиске имени функции для функций, начинающихся с « е». И могут быть другие различия из-за того, как проверяется полное имя функции.
Я сомневаюсь, что это будет измеримо, если у вас нет «идеальной» среды, предназначенной для разбора PHP, и большого количества запросов с различными параметрами. Но должна быть разница, ведь PHP - интерпретируемый язык.
Руководство по PHP на die :
die - Эквивалент для выхода
Вы даже можете сделать die;то же самое, что и exit;- с паренсом или без него.
Единственное преимущество выбора die()более exit(), может быть время вы сэкономить на вводе дополнительного письма ;-)
php -a) die;, die();, exit;и exit();не имеет никакого эффекта, в то время как exit(без запятой) выходит в интерактивном режиме.
Как и все другие правильные ответы говорит, dieи exitявляются идентичными / псевдонимами.
Хотя у меня есть личное соглашение, что когда я хочу прекратить выполнение скрипта, когда это ожидается и желательно, я использую exit;. И когда мне нужно завершить выполнение из-за некоторых проблем (не удалось подключиться к БД, не удается записать в файл и т. Д.), Я использую die("Something went wrong.");«убить» сценарий.
Когда я использую выход:
header( "Location: http://www.example.com/" ); /* Redirect browser */
/* Make sure that code below does not get executed when we redirect. */
exit; // I would like to end now.
Когда я использую die:
$data = file_get_contents( "file.txt" );
if( $data === false ) {
die( "Failure." ); // I don't want to end, but I can't continue. Die, script! Die!
}
do_something_important( $data );
Таким образом, когда я вижу exitкакой-то момент в моем коде, я знаю, что в этот момент я хочу выйти, потому что логика заканчивается здесь. Когда я вижу die, я знаю, что хотел бы продолжить выполнение, но я не могу или не должен из-за ошибки в предыдущем выполнении.
Конечно, это работает только при работе над проектом в одиночку. Когда будет больше людей, никто не будет мешать им пользоваться dieили exitтам, где это не соответствует моим правилам ...
Вот кое-что, что довольно интересно. Хотя exit()и die()эквивалентны, die() закрывает связь. exit() не закрывает соединение
die():
<?php
header('HTTP/1.1 304 Not Modified');
die();
?>
exit():
<?php
header('HTTP/1.1 304 Not Modified');
exit();
?>
Результаты:
exit():
HTTP/1.1 304 Not Modified
Connection: Keep-Alive
Keep-Alive: timeout=5, max=100
die():
HTTP/1.1 304 Not Modified
Connection: close
Просто нужно учитывать это для вашего проекта.
exitи dieработаю одинаково, они оба закрывают связь.
По функциональности они идентичны, но я использую их в следующих сценариях, чтобы сделать код читабельным:
Используйте die (), когда возникает ошибка и необходимо остановить выполнение.
например
die( 'Oops! Something went wrong' );
Используйте exit (), когда нет ошибки и необходимо остановить выполнение.
например
exit( 'Request has been processed successfully!' );
На этой странице написано, dieчто это союзники exit, поэтому они идентичны. Но также объясняет, что:
есть функции, которые изменили имена из-за очистки API или по какой-то другой причине, а старые имена хранятся в качестве псевдонимов для обратной совместимости. Обычно это плохая идея использовать такие псевдонимы, так как они могут быть связаны с устареванием или переименованием, что приведет к непереносимым сценариям.
Итак, назовите меня параноиком, но dieв будущем этого может и не быть .
is_int()и is_integer()одинаково хороши, например. Глядя на php-srcисторию коммитов на GitHub, die()конструкция была в PHP по крайней мере с 1999 года, когда она была преобразована в репозиторий SVN, и, вероятно, до тех пор, пока существует язык. Кажется абсурдом представить, что это когда-либо будет осуждается.
exitв будущем его может и не быть. Или не может быть dieв будущем"
Этот вывод https://3v4l.org демонстрирует, что die и exit функционально идентичны.
Они по сути одинаковы, хотя эта статья предполагает иное.
Функционально они идентичны. Поэтому выбирать, какой из них использовать, - это личное предпочтение. Семантически на английском они разные. Die звучит отрицательно. Когда у меня есть функция, которая возвращает данные JSON клиенту и завершает программу, может быть ужасно, если я вызову эту функцию jsonDie (), и более уместно назвать ее jsonExit (). По этой причине я всегда использую выход вместо смерти.
Из того, что я знаю, когда я смотрю на этот вопрос здесь
Там говорится, что «в PHP есть четкое различие в выводе заголовка. В приведенных ниже примерах я решил использовать другой заголовок, но для того, чтобы показать разницу между exit () и die (), которая не имеет значения», и проверено (лично)
В викторине w3schools: функции die () и exit () делают одно и то же? мой ответ неверен Это неверный ответ. Правильный ответ верен.
По крайней мере, я заметил в своих сценариях, что exit () остановит исполняемый в данный момент сценарий и передаст управление любому вызывающему сценарию, а die остановит php на своих треках. Я бы сказал, что это довольно большая разница?
Результат функций exit () и die () всегда одинаков. Но, как объясняется на странице справки по псевдониму ( http://php.net/manual/en/aliases.php ), говорится, что функция die () вызывает функцию выхода. Я думаю, что это жестко, как показано ниже:
function die($msg){
exit($msg);
}
Это не проблема производительности для малых, средних и крупных проектов, но если в проекте есть миллиарды, умноженные на миллиарды, умноженные на миллиарды процессов, это очень важное состояние оптимизации производительности.
Но большинство людей не думают, что это проблема, потому что если у вас так много процессов, вы должны думать о большем количестве проблем, чем если бы функция была хозяином или псевдонимом.
Но точный ответ таков; всегда мастер-функция быстрее, чем псевдоним.
В заключение; На странице руководства Alias написано, что вы больше не можете использовать die. Это только псевдоним, и он не рекомендуется.
Обычно это плохая идея использовать такие псевдонимы, так как они могут быть связаны с устареванием или переименованием, что приведет к непереносимым сценариям. Этот список предназначен для тех, кто хочет обновить свои старые сценарии до более нового синтаксиса.
die()это не отдельная функция. Это просто другое имя exit(). Этот ответ содержит неверные утверждения о псевдонимах и их производительности.
Они звучат примерно одинаково, однако exit () также позволяет вам установить код выхода вашего PHP-скрипта.
Обычно это вам не нужно, но при написании консольных PHP-скриптов вы можете проверить, например, с помощью Bash, правильно ли скрипт завершил все.
Затем вы можете использовать exit () и поймать это позже. Die () однако не поддерживает это.
Die () всегда существует с кодом 0. Поэтому, по сути, команда die () выполняет следующее:
<?php
echo "I am going to die";
exit(0);
?>
Который так же, как:
<?php
die("I am going to die");
?>
dieи exitидентичны (они производят один и тот же токен парсера ( T_EXIT) и выполняются одним и тем же кодом). Если параметр является целым числом, он вернет этот код в оболочку. Если это не так, он выведет его и вернет 0. Таким образом, dieи exitбуквально псевдонимы друг для друга.
so exit() is exit and die() is also exit :)