Каковы различия между функциями die()
и exit()
в PHP
?
Я думаю, что обе имеют одинаковую функциональность, но я сомневаюсь, что в обоих есть что-то другое … что это?
Нет никакой разницы – они одинаковы.
Руководство PHP для exit
:
Примечание. Эта языковая конструкция эквивалентна
die()
.
Руководство PHP для die
:
Эта языковая конструкция эквивалентна
exit()
.
Разница между die()
и exit()
в PHP – это их происхождение .
exit()
– из exit()
в C. die()
die
от Perl . die()
и exit()
являются эквивалентными функциями.
Руководство PHP для die
:
Эта языковая конструкция эквивалентна
exit()
.
Руководство PHP для exit
:
Примечание. Эта языковая конструкция эквивалентна
die()
.
Руководство PHP для списка псевдонимов функций :
die
– это псевдоним дляexit()
главной функцииexit()
die()
и exit()
отличаются на других языках, но на PHP они идентичны.
Из еще одного разговора PHP :
… Как C и Perl-кодер, я был готов ответить: «Почему, exit () просто сбрасывает программу с числовым статусом выхода, а die () выводит сообщение об ошибке на stderr и выходит из состояния EXIT_FAILURE. " Но потом я вспомнил, что мы находимся в беспорядочной синтаксической области PHP.
В PHP, exit () и die () идентичны.
Дизайнеры, очевидно, подумали: «Хм, давайте займем exit () с C. И людям Perl, вероятно, понравится, если мы возьмем die (), как и Perl . У нас есть две функции выхода сейчас! Давайте сделаем так, чтобы они оба может принимать строку или целое число в качестве аргумента и делать их идентичными! "
Конечным результатом является то, что на самом деле это не делает вещи «более легкими», а просто более запутанными. C и Perl будут продолжать использовать exit () для того, чтобы бросать только значение для целочисленного выхода, а die () – бросать сообщение об ошибке и выходить с ошибкой. Новички и люди из PHP-как-первых наверняка задаются вопросом: «umm, две функции выхода, которую я должен использовать?» В руководстве не объясняется, почему есть exit () и die ().
В общем, PHP имеет много странной избыточности, как это – он пытается быть дружелюбным к людям, которые происходят из разных языков, но при этом создает путаную избыточность.
Как указывалось ранее, эти две команды создают один и тот же токен парсера.
НО
Существует небольшая разница, и это то, как долго парсер возвращает маркер.
Я не изучал парсер PHP, но если это длинный список функций, начинающийся с «d», и более короткий список, начинающийся с «e», тогда должно быть наказание за время, просматривающее имя функции для функций, начинающихся с " е». И могут быть другие различия из-за того, как проверяется имя всей функции.
Я сомневаюсь, что это будет измеримо, если у вас нет «идеальной» среды, посвященной анализу php и множеству запросов с разными параметрами. Но должна быть разница, в конце концов, PHP является интерпретированным языком.
Руководство PHP по матрице :
die – эквивалент выхода
Вы даже можете die;
так же, как exit;
– с или без парнеров.
Единственное преимущество при выборе die()
over exit()
– это время, когда вы набираете лишнюю букву 😉
Как говорят все остальные правильные ответы, die
и exit
идентичны / псевдонимы.
Хотя у меня есть личное соглашение, что, когда я хочу закончить выполнение сценария, когда он ожидается и будет желательным, я использую exit;
, И когда мне нужно закончить выполнение из-за некоторых проблем (не удалось подключиться к db, не могу записать в файл и т. Д.), Я использую die("Something went wrong.");
«убить» сценарий.
Когда я использую exit:
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
если он не соответствует моим соглашениям …
На этой странице говорится, что die
– это союзник exit
, поэтому они идентичны. Но также объясняется, что:
есть функции, которые меняли имена из-за очистки API или по другой причине, а старые имена сохраняются только как псевдонимы для обратной совместимости. Как правило, плохая идея использовать эти псевдонимы, поскольку они могут быть связаны устареванием или переименованием, что приведет к неспортивному сценарию.
Итак, назовите меня параноидальным, но в будущем не может быть никакого умирания.
Они, по сути, одинаковы, хотя в этой статье предлагается иное.
Этот вывод с https://3v4l.org показывает, что die и exit функционально идентичны.
При использовании командной строки,
die("Error");
Будет печатать на «Ошибка» до STDOUT и выходить с кодом ошибки 0.
если вы хотите выйти с кодом ошибки 1, вам необходимо:
fwrite(STDERR, "Error"); exit(1);
Это может быть полезно при выполнении сценариев php из командной строки или сценариев оболочки, и вы хотите узнать, завершен ли сценарий с кодом нулевого выхода. скопированный ответ charanjeet от Quora
Что-то, что я заметил в моих сценариях, по крайней мере, заключается в том, что exit () остановит исполняемый скрипт и передаст управление на любой вызывающий скрипт, в то время как die остановит php на своих дорожках. Я бы сказал, что это большая разница?
Функционально они идентичны. Поэтому выбирать, какой из них использовать, является полностью личным предпочтением. Семантически по-английски они разные. Звук звучит отрицательно. Когда у меня есть функция, которая возвращает данные JSON клиенту и завершает работу программы, это может быть ужасно, если я вызываю эту функцию jsonDie (), и более целесообразно называть ее jsonExit (). По этой причине я всегда использую exit вместо die.
В w3schools Quiz: функции 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"); ?>