В чем разница между функциями die()
и exit()
в PHP?
Я думаю, что у обоих одинаковые функции, но я сомневаюсь, что в обоих есть что-то другое ... что это?
В чем разница между функциями die()
и exit()
в PHP?
Я думаю, что у обоих одинаковые функции, но я сомневаюсь, что в обоих есть что-то другое ... что это?
Нет никакой разницы - они такие же.
Руководство по PHP для exit
:
Примечание. Эта языковая конструкция эквивалентна
die()
.
Руководство по PHP для die
:
Эта языковая конструкция эквивалентна
exit()
.
die
для остановок, связанных с ошибкой, и exit
для всех других сценариев. Просто кажется, что при чтении кода он течет лучше.
- person nextgentech; 11.01.2014
die
гораздо быстрее писать, чем _2 _... Я начинаю использовать exit
, потому что он более читается для программистов, не использующих PHP, но die
просто быстрее набирает, когда ты очень торопишься. Кроме того, кстати, я печатаю, мне не нужно менять положение рук, чтобы написать die
.
- person Alejandro Iván; 27.02.2015
exit(0)
для успеха и exit($non_zero)
для ошибок.
- person Pacerier; 30.06.2015
die()
вообще существует.
- person nextgentech; 30.06.2015
exit
вместо die
или die
вместо exit
. Я предлагаю принять решение и выберите один. Любой из них подходит, не смешивайте оба в той же кодовой базе, если только вы не единственный, кто его разрабатывает / поддерживает.
- person Pacerier; 02.07.2015
die
вместо exit
(и я согласен, что он есть), тогда вам следует серьезно подумать о переходе на раскладку клавиатуры, такую как Dvorak - я думаю, вы действительно оцените ускорение после кривой обучения .
- person mtraceur; 19.03.2017
die
и exit
! Проверьте эту страницу: php.net/manual/en/aliases.php
- person CJ Dennis; 03.12.2017
Разница между die()
и _ 2_ в PHP является их источником.
exit()
с сайта _ 4_ в C.die()
взято с _ 6_ в Perl.die()
и _ 8_ - эквивалентные функции.
Руководство по PHP для die
:
Эта языковая конструкция эквивалентна
exit()
.
Руководство по PHP для exit
:
Примечание. Эта языковая конструкция эквивалентна
die()
.
Руководство PHP для Список псевдонимов функций:
die()
и _ 16_ различны в других языках, но в PHP они идентичны.
... Как программист на C и Perl, я был готов ответить, почему exit () просто отключает программу с числовым статусом выхода, а die () выводит сообщение об ошибке в stderr и завершает работу со статусом EXIT_FAILURE. Но потом я вспомнил, что мы находимся в стране с запутанным синтаксисом PHP.
В PHP функции exit () и die () идентичны.
Дизайнеры, очевидно, подумали: "Хм, давайте позаимствуем exit () у C". И людям Perl, вероятно, понравится, если мы возьмем die () как и из Perl. Ой! Теперь у нас есть две функции выхода! Давайте сделаем так, чтобы они оба могли принимать в качестве аргумента строку или целое число и делать их идентичными!
В конечном итоге это не облегчило задачу, а только запутало ее. Программисты C и Perl будут продолжать использовать exit () для выдачи только целочисленного значения выхода и die () для выдачи сообщения об ошибке и выхода с ошибкой. Новички и люди, знающие PHP как первый язык, вероятно, зададутся вопросом: ммм, две функции выхода, какую из них мне следует использовать? В руководстве не объясняется, почему существуют exit () и die ().
В общем, PHP имеет много странной избыточности, подобной этой - он пытается быть дружелюбным по отношению к людям с разным языковым прошлым, но при этом создает сбивающую с толку избыточность.
exit()
не закрывает соединение, в то время как die()
делает это, кажется актуальным.
- person ner0; 17.12.2019
Как указывалось ранее, эти две команды производят один и тот же токен парсера.
НО
Есть небольшая разница, и это то, сколько времени требуется синтаксическому анализатору, чтобы вернуть токен.
Я не изучал синтаксический анализатор PHP, но если это длинный список функций, начинающийся с «d», и более короткий список, начинающийся с «e», тогда должно быть время на поиск имени функции для функций, начинающихся с « е ". И могут быть другие различия из-за того, как проверяется все имя функции.
Я сомневаюсь, что его можно будет измерить, если у вас нет «идеальной» среды, предназначенной для синтаксического анализа PHP, и множества запросов с разными параметрами. Но должна быть разница, ведь PHP - это интерпретируемый язык.
Руководство PHP по die:
die - Эквивалент выхода
Вы даже можете делать die;
так же, как exit;
- с скобками или без них.
Единственное преимущество выбора die()
перед exit()
- это время, которое вы сэкономите на вводе дополнительной буквы ;-)
php -a
) die;
, die();
, exit;
и exit();
не действуют, а exit
(без точки с запятой) выходит из интерактивного режима.
- person santiago arizti; 12.12.2019
Вот кое-что довольно интересное. Хотя exit()
и die()
эквивалентны, die()
закрывает соединение. exit()
не закрывает соединение.
die()
:
<?php
header('HTTP/1.1 304 Not Modified');
die();
?>
exit()
:
<?php
header('HTTP/1.1 304 Not Modified');
exit();
?>
Результаты:
die()
:
HTTP/1.1 304 Not Modified
Connection: close
exit()
:
HTTP/1.1 304 Not Modified
Connection: Keep-Alive
Keep-Alive: timeout=5, max=100
На всякий случай необходимо учесть это в своем проекте.
Кредиты: https://stackoverflow.com/a/20932511/4357238
exit
и die
работают одинаково, они оба закрывают соединение.
- person Grzegorz Adam Kowalski; 13.02.2020
Как говорится во всех других правильных ответах, 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
там, где это не соответствует моим соглашениям ...
По функциональности они идентичны, но я использую их в следующих сценариях, чтобы сделать код читабельным:
Используйте die (), когда возникает ошибка и необходимо остановить выполнение.
e.g.
die( 'Oops! Something went wrong' );
Используйте exit (), когда нет ошибки и нужно остановить выполнение.
e.g.
exit( 'Request has been processed successfully!' );
Этот вывод из https://3v4l.org демонстрирует, что die и exit функционально идентичны.
На этой странице указано, что die
является союзником exit
, поэтому они идентичны. Но также объясняет, что:
есть функции, которые изменили имена из-за очистки API или по какой-либо другой причине, а старые имена сохраняются только как псевдонимы для обратной совместимости. Обычно использование таких псевдонимов - плохая идея, поскольку они могут быть устаревшими или переименованными, что приведет к непереносимости скрипта.
Так что называйте меня параноиком, но может не быть die
в будущем.
is_int()
и is_integer()
одинаково хороши. Глядя на php-src
историю коммитов на GitHub, конструкция die()
была как минимум в PHP с 1999 года, когда он был преобразован в репозиторий SVN, и, вероятно, до тех пор, пока существует язык. Кажется абсурдным предполагать, что он когда-либо прекратит свое существование.
- person Mark Amery; 01.12.2014
exit
. Или может не быть die
в будущем
- person Pacerier; 30.06.2015
По сути, они одинаковы, хотя эта статья предполагаем иначе.
Функционально они идентичны. Так что выбирать, какой из них использовать, полностью личное предпочтение. Семантически в английском они разные. Die звучит отрицательно. Когда у меня есть функция, которая возвращает данные JSON клиенту и завершает программу, это может быть ужасно, если я вызываю эту функцию jsonDie (), и более уместно называть ее jsonExit (). По этой причине я всегда использую exit вместо die.
Насколько я знаю, когда смотрю на этот вопрос, здесь
Там сказано, что «в PHP существует явная разница в выводе заголовка. В приведенных ниже примерах я решил использовать другой заголовок, но для того, чтобы показать разницу между exit () и die (), которая не имеет значения», и проверено (лично)
Результат функции exit () и функции die () всегда одинаков. Но, как объясняется на странице руководства по псевдониму (http://php.net/manual/en/aliases.php), в нем говорится, что функция die () вызывает функцию выхода. Я думаю, что это жестко запрограммировано, как показано ниже:
function die($msg){
exit($msg);
}
Это не проблема производительности для малых, средних и крупных проектов, но если в проекте есть миллиарды, умножить миллиарды, умножить миллиарды процессов, это произойдет очень важное состояние оптимизации производительности.
Но очень многие люди не думают, что это проблема, потому что, если у вас столько процессов, вы должны думать о большем количестве проблем, чем если бы функция была главной или псевдонимом.
Но точный ответ таков; allways master работает быстрее, чем псевдоним.
Наконец-то; На странице руководства Alias говорится, что вы больше не можете использовать die. Это всего лишь псевдоним, и он устарел.
Обычно использование таких псевдонимов - плохая идея, так как они могут быть устаревшими или переименованными, что приведет к непереносимости скрипта. Этот список предназначен для тех, кто хочет обновить свои старые сценарии до более нового синтаксиса.
die()
не является отдельной функцией. Это просто еще одно название exit()
. Этот ответ содержит неверные утверждения о псевдонимах и их производительности.
- person axiac; 15.03.2018
Что-то, что я заметил в своих сценариях, по крайней мере, заключается в том, что exit () остановит текущий выполняющийся сценарий и передаст управление любому вызывающему сценарию, в то время как die остановит php на своем пути. Я бы сказал, что это довольно большая разница?
Они звучат примерно одинаково, однако 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
буквально являются псевдонимами друг для друга.
- person ircmaxell; 29.04.2011
so exit() is exit and die() is also exit :)
- person Muhammad Shahzad   schedule 06.04.2016