7

В чем разница между die() и exit() в PHP?

9

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

Я думаю, что обе функции выполняют одинаковую задачу, но у меня есть сомнения, существует ли какая-то разница между ними... В чем она заключается?

5 ответ(ов)

0

Как уже упоминалось, эти две команды производят одинаковый токен парсера.

НО

Существует небольшая разница, а именно — сколько времени нужно парсеру для возврата токена.

Я не изучал парсер PHP, но если есть длинный список функций, начинающихся на "d", и более короткий список функций, начинающихся на "e", то, вероятно, существует временные затраты на поиск имени функции для функций, начинающихся на "e". И могут быть и другие отличия из-за того, как проверяется всё имя функции.

Сомневаюсь, что это будет измеримо, если только у вас не будет «идеальной» среды, созданной исключительно для парсинга PHP, и большого количества запросов с разными параметрами. Но разница, безусловно, существует, в конце концов, PHP — это интерпретируемый язык.

0

Вот что интересно. Хотя функции 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

0

Как уже отмечают все другие правильные ответы, die и exit идентичны и являются синонимами.

Тем не менее, у меня есть личная конвенция: когда я хочу завершить выполнение скрипта в ожидаемом и желаемом контексте, я использую exit;. А когда мне нужно остановить выполнение из-за каких-либо проблем (например, не удалось подключиться к базе данных, не могу записать в файл и т.д.), я предпочитаю использовать die("Что-то пошло не так.");, чтобы «убить» скрипт.

Когда я использую exit:

header( "Location: http://www.example.com/" ); /* Перенаправляем браузер */
/* Убедитесь, что следующий код не выполнится при перенаправлении. */
exit; // Я хочу завершить выполнение сейчас.

Когда я использую die:

$data = file_get_contents( "file.txt" );
if( $data === false ) {
    die( "Ошибка." ); // Я не хочу завершать, но не могу продолжать. Убей скрипт! Убей!
}
do_something_important( $data );

Таким образом, когда я вижу exit в какой-то части кода, я знаю, что в этой точке хочу завершить выполнение, потому что логика заканчивается здесь. Когда я вижу die, я понимаю, что хотел бы продолжить выполнение, но не могу или не должен из-за ошибки в предыдущем выполнении.

Конечно, это работает только когда я работаю над проектом один. Когда участвует несколько человек, никто не остановит их от использования die или exit там, где это не соответствует моим конвенциям…

0

С функциональной точки зрения функции die() и exit() идентичны, однако я использую их в разных сценариях для повышения читаемости кода:

Используйте die(), когда возникает ошибка и необходимо прервать выполнение скрипта.

например:

die('Упс! Что-то пошло не так');

Используйте exit(), когда ошибки нет, но нужно остановить выполнение скрипта.

например:

exit('Запрос успешно обработан!');
0

Это утверждение верно в контексте написания кода на PHP. Функция die() является алиасом функции exit(), и на практике они делают одно и то же — завершение выполнения скрипта. Однако разница заключается в том, что die() проще и быстрее в написании, поскольку состоит из всего трех символов по сравнению с exit(), которая содержит четыре.

Поэтому если вам нужно просто завершить выполнение скрипта без дополнительных условий, и вы хотите сэкономить время на наборе кода, использование die() может быть более предпочтительным.

Тем не менее, стоит отметить, что выбор между die() и exit() должен основываться не только на удобстве написания, но и на читабельности кода. Новым разработчикам может быть легче понять exit(), так как это более понятное слово. В итоге, оба варианта являются эквивалентными, и вы можете использовать тот, который вам больше нравится.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь