Die php что это
(PHP 4, PHP 5, PHP 7, PHP 8)
die — Эквивалент функции exit
Описание
User Contributed Notes 7 notes
If you ever want the public to use your site, always design it to handle errors in a way that will allow them to continue using it if possible. If it’s not possible and the site really is broken, make sure that you find out so that you can fix it. die() by itself won’t do either.
If a supermarket freezer breaks down, a customer who wanted to buy a tub of ice cream doesn’t expect to be kicked out of the building.
Beware that when using PHP on the command line, die(«Error») simply prints «Error» to STDOUT and terminates the program with a normal exit code of 0.
If you are looking to follow UNIX conventions for CLI programs, you may consider the following:
$ php die.php > test
An error occurred.
rc@adl-dev-01:
Ideally, PHP would write all Warnings, Fatal Errors, etc on STDERR, but that’s another story.
Using die() can be a good option when working with HTTP Endpoints.
If your PHP Script is one, you can use die() to send back an error as plain text or JSON for example.
die(json_encode(array(‘error’ => ‘some error’)));
Do not forget to add an error log, so you also get to know about the problem, as well as an error 500 header.
/* log.txt
2017-11-01T23:56:00+00:00 (normal)
2017-11-01T23:56:01+00:00 (normal)
2017-11-01T23:56:02+00:00 (normal)
2017-11-01T23:56:03+00:00 (shutdown)
2017-11-01T23:56:04+00:00 (shutdown)
2017-11-01T23:56:05+00:00 (shutdown)
[ logs for 3 days ]
*/
?>
2.) With this code, the registered function is limited to max_execution_time.
// [. ]
// Try 2 to go to shutdown
sleep ( ini_get ( «max_execution_time» ) + 1 );
Каковы различия в die () и exit () в PHP?
Я думаю, что обе имеют одинаковую функциональность, но я сомневаюсь, что в обоих есть что-то другое … что это?
Нет никакой разницы – они одинаковы.
Руководство PHP для exit :
Руководство PHP для die :
РАЗЛИЧИЯ В ПРОИСХОЖДЕНИИ
ФУНКЦИОНАЛЬНО ЭКВИВАЛЕНТ
die() и exit() являются эквивалентными функциями.
Руководство PHP
Руководство PHP для die :
Руководство PHP для exit :
Руководство PHP для списка псевдонимов функций :
die – это псевдоним для exit() главной функции exit()
РАЗЛИЧИЕ В ДРУГИХ ЯЗЫКАХ
die() и exit() отличаются на других языках, но на PHP они идентичны.
Из еще одного разговора PHP :
… Как C и Perl-кодер, я был готов ответить: «Почему, exit () просто сбрасывает программу с числовым статусом выхода, а die () выводит сообщение об ошибке на stderr и выходит из состояния EXIT_FAILURE. » Но потом я вспомнил, что мы находимся в беспорядочной синтаксической области PHP.
В PHP, exit () и die () идентичны.
Конечным результатом является то, что на самом деле это не делает вещи «более легкими», а просто более запутанными. C и Perl будут продолжать использовать exit () для того, чтобы бросать только значение для целочисленного выхода, а die () – бросать сообщение об ошибке и выходить с ошибкой. Новички и люди из PHP-как-первых наверняка задаются вопросом: «umm, две функции выхода, которую я должен использовать?» В руководстве не объясняется, почему есть exit () и die ().
В общем, PHP имеет много странной избыточности, как это – он пытается быть дружелюбным к людям, которые происходят из разных языков, но при этом создает путаную избыточность.
Как указывалось ранее, эти две команды создают один и тот же токен парсера.
Существует небольшая разница, и это то, как долго парсер возвращает маркер.
Я не изучал парсер PHP, но если это длинный список функций, начинающийся с «d», и более короткий список, начинающийся с «e», тогда должно быть наказание за время, просматривающее имя функции для функций, начинающихся с » е». И могут быть другие различия из-за того, как проверяется имя всей функции.
Я сомневаюсь, что это будет измеримо, если у вас нет «идеальной» среды, посвященной анализу php и множеству запросов с разными параметрами. Но должна быть разница, в конце концов, PHP является интерпретированным языком.
Руководство PHP по матрице :
Вы даже можете die; так же, как exit; – с или без парнеров.
Единственное преимущество при выборе die() over exit() – это время, когда вы набираете лишнюю букву 😉
Как говорят все остальные правильные ответы, die и exit идентичны / псевдонимы.
Когда я использую exit:
Когда я использую die:
Конечно, это работает только при работе над проектом. Когда есть больше людей, никто не будет препятствовать им использовать die или exit если он не соответствует моим соглашениям …
есть функции, которые меняли имена из-за очистки API или по другой причине, а старые имена сохраняются только как псевдонимы для обратной совместимости. Как правило, плохая идея использовать эти псевдонимы, поскольку они могут быть связаны устареванием или переименованием, что приведет к неспортивному сценарию.
Итак, назовите меня параноидальным, но в будущем не может быть никакого умирания.
Они, по сути, одинаковы, хотя в этой статье предлагается иное.
Этот вывод с https://3v4l.org показывает, что die и exit функционально идентичны.
При использовании командной строки,
Будет печатать на «Ошибка» до STDOUT и выходить с кодом ошибки 0.
если вы хотите выйти с кодом ошибки 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 () выполняет следующие действия:
Как «делать что-то OR DIE ()» в PHP?
Я пишу приложение php для доступа к базе данных MySQL, а в учебнике сказано что-то вроде формы
Как PHP знает, что функция провалилась, так что она запускает часть штампа? Наверное, я спрашиваю, как работает «или» его часть. Я не думаю, что видел это раньше.
Поэтому, если ваш запрос не увенчался успехом, он будет оценивать оператор die() и заканчивать сценарий.
PHP or работает как C’s || (который, кстати, также поддерживается PHP – or просто выглядит лучше и имеет разные приоритеты оператора – см. эту страницу ).
Он известен как оператор короткого замыкания, потому что он пропустит любые оценки, как только у него будет достаточно информации, чтобы определить окончательное значение.
В вашем примере, если mysql_connect() возвращает TRUE, тогда PHP уже знает, что весь оператор будет оценивать TRUE независимо от того, что die() evalutes, и, следовательно, die() не оценивается.
Если mysql_connect() возвращает FALSE, PHP не знает, будет ли весь оператор оцениваться в TRUE или FALSE, чтобы он продолжался, и пытается выполнить evalute die() – завершение сценария в этом процессе.
Это просто хороший трюк, который использует способ or работает.
Он работает, как описано другими.
В PHP не используйте «die», так как он НЕ создает исключение (как в Perl). Вместо этого выкиньте исключение должным образом обычным способом.
die не может быть пойман на PHP и не записывается в журнал – вместо этого он печально печатает сообщение и сразу же покидает скрипт, никому не рассказывая ничего или предоставляя вам возможность записывать событие, повторять попытку и т. д.
Использование выражений в PHP
В данном тексе я лишь обращаю внимание на некоторые возможности языка PHP. Я не предлагаю их использовать, так как это в некоторых случаях существенно усложняет читабельность кода и приводит к сложностям при отладке. Однако описанные мной подходы в ряде случаев существенно позволяют сократить код.
Выражения — это краеугольный камень PHP. Почти все, что вы пишете в PHP, является выражением. Самое простое и точное определение выражения — «все что угодно, имеющее значение». (с сайта php.net)
UPD: Статья только о том, как МОЖНО делать в некоторых случаях, когда это оправданно. В большинстве случаях (и тем более повсеместно) описанную практику применять не стоит ни в коем случае, так как она сильно усложняет код. Цель статьи — расказать о возможностях языка, не более того.
Как правило 80-90% любого PHP-скрипта состоит из выражений:
Можно игнорировать присваивание значения выражения. Это все равно будет правильным кодом с точки зрения PHP:
Оператор присваивания в свою очередь может использоваться в выражениях многократно:
И вот какие выводы можно сделать из этого уже на первый взгляд:
// func1() и func2() выполнятся в любом случае:
func1() + func2();
Встретив в PHP-коде подобие последней строчки из данного примера, многие программисты впадут в ступор. Поэтому тут я остановлюсь поподробнее.
Дело в том, что выражения с логическими операторами вычисляются до получения однозначного значения. Этот момент может наступить раньше, нежели выражение будет целиком вычислено, например:
func1() никогда не будет вызван, так как при вычислении “true or” результатом уже однозначно будет true, не зависимо от того, что идет дальше. Аналогично с оператором and:
$a = false and func1();
Замечу, что кроме операторов or и and существуют операторы || и &&. Разница между ними только в приоритете выполнения (or и and вычисляются позже). Для побитовых операторов | & и др. данное правило не действует, выражение вычисляется полностью.
Поэтому выражение:
Func1() or func2() or func3();
Может быть трактовано как «выполнять до тех пор, пока какая-нибудь функция не вернет true», и аналогично с оператором and – false. Поэтому эту возможность можно использовать в качестве оператора if:
$res = mysql_connect(…);
if (!$res) die();
$res = mysql_connect(…) or die();
Разница только в том, что пример ниже более компактен. Ну, и немного менее читабелен. Вот более реальный пример:
mysql_connect(…) and mysql_select_db (…) and mysql_query(«SET NAMES utf8») or die(mysql_error());
Всего одна строчка – выполнение соединения с БД, выбор БД, установка кодировки и вывод ошибки, если что-то пошло не так.
Это можно рассматривать и глубже, но тогда код становится абсолютно нечитаемым, и чтоб в нем разобраться другому разработчику потребуется серьезный мозговой штурм. Здесь (как и везде) действует правило «хорошо, но в меру».
Теперь о непосредственном практическом применении. Далее я приведу примеры со своими комментариями, т.к. в данном случае пример лучший учитель.
Как известно, наиболее часто используемыми циклами является for и while. В качестве аргументов они используют те же самые выражения. Например, вот такой код, характерный для новичков:
$res = mysql_query(“SELECT …”);
If ($res) while ($v = mysql_fetch_assoc($res))
<
// тут какие-то действия с массивом.
>
Вместо вот этого можно написать:
for(
$res = mysql_query(“SELECT …”);
$res && ($v = mysql_fetch_assoc($res));
// тут какие-то действия с массивом, например
print_r($v)
);
Кстати, у цикла for начальное и конечное выражение может состоять из многих выражений, которые перечисляются через запятую:
Интересные случаи использования оператора присваивания, при котором переменные, входящие в выражение изменяются в процессе его вычисления. Например, у нас есть некий файл, который может содержаться в одном из директориев DIR1 и DIR2 или отсутствовать. Требуется определить путь к этому файлу. Сходу можно написать вот такой код.
Ну, и наконец, как уже было сказано можно избавляться от небольших блоков if. Как это делается, я уже привел примеры, так что повторяться не буду.
PHP: в чем разница между exit()/die() и return; внутри «self» и включенных файлов?
3 ответов
Return возвращает значение. Это может быть что угодно и предназначено для функций.
Return is возвращает значение (char,int,string, array. ) и выход из функции.
из руководства php:
Примечание: эта языковая конструкция эквивалентна die ().
но все же есть разница между умереть и выход :
используя die () вы можете опубликовать строку : die(«произошла ошибка»);
такой же результат с использованием exit ()
или если вы CLI или оболочка unix:
используя PHP в командной строке, die («произошла ошибка») просто печатает» произошла ошибка » в STDOUT и завершает программу обычным кодом выхода 0.
die и exit (эквивалентные функции)
return
возвращает управление программой вызывающему модулю. Исполнение возобновляется на оператор, следующий за вызовом вызываемого модуля.
если вызывается из функции, оператор return немедленно выполнение заканчивается текущей функции и возвращает свой аргумент как значение вызова функции. return также завершает выполнение оператор eval() или файл сценария.
если вызывается из глобальной области, то выполнение текущего скрипта файл закончен. Если текущий файл сценария включен или требуется, затем управление передается обратно в вызывающий файл. Кроме того, если текущий файл сценария был включен, затем значение, заданное для возврата, будет быть возвращенным как значение включить вызов. Если return вызывается из в главном файле скрипта завершается выполнение скрипта. Если текущий файл сценария был назван auto_prepend_file или параметры конфигурации auto_append_file в php.ini, то этот сценарий выполнение файла прекращается.
die vs exit
разницу между die() и exit() в PHP-это их origin.
руководство по PHP
руководство PHP для die :
в PHP Руководство для exit :
РАЗНЫЕ НА ДРУГИХ ЯЗЫКАХ
die() и exit() are другое на других языках но в PHP они идентичны.
. как кодер C и Perl, я был готов ответить: «почему, exit () just bails выключите программу с числовым статусом выхода, а die () распечатает сообщение об ошибке в stderr и завершает работу со статусом EXIT_FAILURE.» Зато Я вспомнил, что мы в грязно-синтаксис-земля на PHP.
в PHP exit () и die() являются идентичный.
дизайнеры, очевидно, подумали: «Хм, давайте одолжим выход() из C. И Perl людям, вероятно, понравится, если мы возьмем die () как от Perl тоже. Упс! Теперь у нас есть две функции выхода! Давай сделаем так, чтобы они оба можете взять строку или целое число в качестве аргумента и сделать их одинаковыми!»
конечный результат заключается в том, что это не реально сделать все «проще», просто более запутанной. Кодеры C и Perl будут продолжайте использовать exit () для бросьте только целочисленное значение выхода и die (), чтобы бросить сообщение об ошибке и выйти с провалом. Новички и PHP-как-первый-язык люди вероятно, будет интересно » umm, две функции выхода, которые я должен использовать?»Руководство не объясняет, почему есть exit () и die ().
в общем, PHP имеет много странной избыточности, как это-он пытается будьте дружелюбны к людям, которые происходят из разных языков, но при этом он создает смущает избыточность.

