Каковы различия в die () и exit () в PHP?

Каковы различия между функциями die() и exit() в PHP ?

Я думаю, что обе имеют одинаковую функциональность, но я сомневаюсь, что в обоих есть что-то другое … что это?

    Нет никакой разницы – они одинаковы.

    Руководство PHP для exit :

    Примечание. Эта языковая конструкция эквивалентна die() .

    Руководство PHP для die :

    Эта языковая конструкция эквивалентна exit() .

    РАЗЛИЧИЯ В ПРОИСХОЖДЕНИИ

    Разница между die() и exit() в PHP – это их происхождение .

    • exit() – из exit() в C.
    • die() die от Perl .

    ФУНКЦИОНАЛЬНО ЭКВИВАЛЕНТ

    die() и exit() являются эквивалентными функциями.

    Руководство PHP

    Руководство 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"); ?>