Ответы:
Там нет разницы - они одинаковы.
Руководство по 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 :)