Відповіді:
Немає різниці - вони однакові.
PHP керівництво для exit
:
Примітка. Ця мовна конструкція еквівалентна
die()
.
PHP керівництво для die
:
Ця мовна конструкція рівнозначна
exit()
.
die
для зупинок, пов'язаних з помилками, та exit
для всіх інших сценаріїв. Це, здається, протікає краще при читанні коду.
die
набагато швидше, ніж exit
... Я починаю використовувати, exit
тому що це читабельніше для непрограмістів-PHP, але die
просто швидше набирати текст, коли ви знаходитесь поспішати. Крім того, до того, як я друкую, мені не потрібно міняти положення рук, щоб писати die
.
Різниця між PHP die()
та exit()
PHP полягає в їхньому походженні .
exit()
від exit()
в C .die()
знаходиться die
в Перлі .die()
і exit()
є рівнозначними функціями.
PHP керівництво для die
:
Ця мовна конструкція рівнозначна
exit()
.
PHP керівництво для exit
:
Примітка. Ця мовна конструкція еквівалентна
die()
.
Посібник PHP для списку функцій псевдонімів :
die()
і exit()
мають різні на інших мовах , але в PHP вони ідентичні.
Від ще однієї PHP рента :
... Як C і Perl кодер, я був готовий відповісти: "Чому, exit () просто виводить програму з числовим статусом виходу, а die () друкує повідомлення про помилку на stderr і виходить зі статусом EXIT_FAILURE. " Але тоді я згадав, що ми знаходимося в безладному синтаксичному краї PHP.
У PHP вихід () та die () ідентичні.
Дизайнери, очевидно, думали, "Хм, давайте запозичимо вихід () від C. І людям Перла, мабуть, сподобається, якщо ми візьмемо die (), як і від Perl . На жаль, у нас є дві функції виходу! Давайте зробимо так, щоб вони обидва може взяти рядок або ціле число як аргумент і зробити їх однаковими! "
Кінцевий результат полягає в тому, що це насправді не робило речі «простішими», а ще більш заплутаними. Кодери C і Perl продовжуватимуть використовувати exit () для підкидання лише цілого значення виходу, а die () для підкидання повідомлення про помилку та виходу з відмовою. Новачки та люди на першому мові PHP, мабуть, зададуться питанням "гмм, дві функції виходу, яку я повинен використовувати?" Посібник не пояснює, чому існує вихід () та die ().
Взагалі, PHP має дуже багато дивних надмірностей, як це - він намагається бути доброзичливим до людей, які походять з різних мов, але, роблячи це, це створює заплутану надмірність.
exit()
не перериває з'єднання, але die()
це здається релевантним.
Як було сказано раніше, ці дві команди виробляють однаковий маркер синтаксичного аналізу.
АЛЕ
Існує невелика різниця, і саме стільки часу потрібно, щоб парсер повернув маркер.
Я не вивчав PHP-аналізатор, але якщо це довгий список функцій, що починається з "d", і коротший список, що починається з "e", тоді має бути покарання часу, яке шукає назву функції для функцій, що починаються з " е ". І можуть бути інші відмінності через те, як перевіряється ім'я всієї функції.
Я сумніваюся, що це буде вимірним, якщо у вас немає "ідеального" середовища, присвяченого розбору PHP, і багато запитів з різними параметрами. Але має бути різниця, адже PHP - це інтерпретована мова.
Посібник для PHP на матриці :
die - еквівалент виходу
Ви можете зробити die;
так само, як і exit;
з паронами або без них.
Єдина перевага вибору die()
більш exit()
, може бути час ви заощадити на введенні додаткового листа ;-)
php -a
) die;
, die();
, exit;
і exit();
не має ніякого ефекту, в той час як exit
(без коми) виходить в інтерактивному режимі.
Як говорять всі інші правильні відповіді, die
і exit
це однакові / псевдоніми.
Хоча я маю особисту умову, що коли я хочу закінчити виконання сценарію, коли це очікується та бажано, я використовую exit;
. І коли мені потрібно закінчити виконання через деякі проблеми (не вдалося підключитися до db, не можу записати у файл тощо), я використовую 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 демонструє, що вмирання та вихід функціонально однакові.
Вони по суті однакові, хоча ця стаття пропонує інше.
Функціонально вони однакові. Тож вибрати, який саме використовувати, - це цілком особиста перевага. Семантично в англійській мові вони різні. Вмирання звучить негативно. Коли у мене є функція, яка повертає дані клієнта JSON клієнту і закінчує програму, це може бути жахливо, якщо я називаю цю функцію jsonDie (), і більш доцільно називати її jsonExit (). З цієї причини я завжди використовую вихід замість die.
З того, що я знаю, коли я дивлюсь на це питання тут
Там сказано, що "в PHP є чітка різниця у виводі заголовка. У наведених нижче прикладах я вирішив використовувати інший заголовок, але заради показу різниці між exit () та die (), що не має значення", і перевірено (особисто)
У вікторині w3schools: функції die () та exit () роблять точно те саме? моя відповідь хибна. Це неправильна відповідь. Правильна відповідь правдива.
Щось, що я помітив у своїх сценаріях, принаймні, це те, що exit () зупинить поточний виконуваний сценарій і передасть керування назад до будь-якого виклику скрипта, тоді як die зупинить php у його треках. Я б сказав, що це досить велика різниця?
Результат функції exit () і die () функції завжди однаковий. Але як пояснено на сторінці керівництва з псевдонімом ( http://php.net/manual/en/aliases.php ), він говорить, що функція die () викликає функцію виходу. Я думаю, що це важко закодовано, як нижче:
function die($msg){
exit($msg);
}
Це не проблема ефективності для малих, середніх та великих проектів, але якщо проект має мільярди, примножують мільярди, примножують мільярдні процеси, це відбувається дуже важливим для оптимізації ефективності.
Але більшість людей не вважає це проблемою, тому що якщо у вас стільки процесів, ви повинні думати більше проблеми, ніж якщо функція є головним чи псевдонімом.
Але точна відповідь така: завжди головна функція швидше, ніж псевдонім.
Нарешті; Сторінка керівництва псевдоніму говорить, що ви більше не можете використовувати функцію die. Це лише псевдонім, і він застарів.
Зазвичай це погана ідея використовувати такі псевдоніми, оскільки вони можуть бути пов'язані з застарінням або перейменуванням, що призведе до невідповідного сценарію. Цей список надається, щоб допомогти тим, хто хоче оновити свої старі сценарії до новішого синтаксису.
die()
не є окремою функцією. Це просто інша назва 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 :)