PHP: в чем разница между exit()/die() и return; внутри "self" и включенных файлов?

Am am все еще находится на PHP-обучении. При завершении скрипта, в чем разница между exit();/die(); и return;?:

  1. в том же файле (один файл сценария)
  2. внутри ребенка включить
  3. внутри родителя include

3 ответов


Return возвращает значение. Это может быть что угодно и предназначено для функций.

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

http://php.net/manual/en/function.return.php


Return is возвращает значение (char,int,string, array...) и выход из функции.

из руководства php:

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

но все же есть разница между умереть и выход :

используя die () вы можете опубликовать строку : die("произошла ошибка");

такой же результат с использованием exit ()

<?php
    echo("An error occurred <br>");
    exit(0);
?>

или если вы CLI или оболочка unix:

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

<?php
    fwrite(STDERR, "An error occurred \n");
    exit(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:

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

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

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

руководство PHP для список псевдонимов функций:

die - псевдоним главной функции exit()


РАЗНЫЕ НА ДРУГИХ ЯЗЫКАХ

die() и exit() are другое на других языках но в PHP они идентичны.

С еще один PHP rant:

...как кодер 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 имеет много странной избыточности, как это-он пытается будьте дружелюбны к людям, которые происходят из разных языков, но при этом он создает смущает избыточность.