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

Возможный дубликат:
Каковы различия в die() и exit() в PHP?

Я полностью запутался в разнице die и exit.

Большинство программистов используют die следующим образом.

$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');  //don't see mysql_* problem it is just example
if (!$link) {
    die('Could not connect: ' . mysql_error());
}

и используя exit, как этот

$filename = '/path/to/data-file';
$file = fopen($filename, 'r')
   or exit("unable to open file ($filename)");

В соответствии с этой функциональностью я не думаю, что есть какая-то разница, поскольку оба завершают выполнение script.

Мой вопрос

1) Могу ли я обменять die с выходом и наоборот в этих примерах?

2) И разница между ними также.

Приветствие...

Ответы

Ответ 1

В соответствии с Die он имеет эквивалент для выхода. Так что да, вы можете их обменять.

Ответ 2

При использовании командной строки

die("Error");

Вернется к "Ошибка" до STDOUT и выйдет с кодом ошибки 0.

если вы хотите выйти с кодом ошибки 1, вам необходимо:

fwrite(STDERR, "Error");
exit(1);

Это может быть полезно при выполнении сценариев php из командной строки или сценариев оболочки, и вы хотите узнать, завершен ли script с кодом нулевого выхода.

Это одна разница, о которой я мог подумать.

P.S. Выше информации, полученной из php.net/exit

Ответ 3

Нет никакой разницы между функцией die() и exit(). Они оба одинаковы и работают одинаково.

Снова возникает вопрос, почему php сохраняет обе функции, если они одинаковы. Обе функции являются псевдонимом друг друга.

Благодаря API и сохранению обратной совместимости обе функции сохраняются.

Вот еще один пример:

is_int() и is_integer() также совпадают.

В PHP существует немало функций, которые вы можете назвать несколькими именами. В некоторых случаях не существует предпочтительного имени среди нескольких, is_int() и is_integer() одинаково хороши, например. Однако есть функции, которые меняли имена из-за очистки API или по другой причине, а старые имена сохраняются только как псевдонимы для обратной совместимости. Как правило, это плохая идея использовать эти псевдонимы, поскольку они могут быть связаны с устареванием или переименованием, что приведет к неспортивным script. Этот список предоставляется, чтобы помочь тем, кто хочет обновить свои старые сценарии до более нового синтаксиса.

Полный список функций псевдонимов вы найдете по следующему URL-адресу:

http://php.net/manual/en/aliases.php

Пусть это поможет вам:)

Ответ 4

die является псевдонимом функции exit.

В php существует много псевдонимов функций, из-за того, как язык развился, развился и преодолел его - http://www.php.net/manual/en/aliases.php.

Ответ 5

die печатает аргумент STDOUT, а не STDERR (grep или 2 > /dev/null поможет вам протестировать его) die возвращает код выхода оболочки в 0, но exit может возвращать другой код позволяет определить полный аналог в PHP:

function mydie($str){
  echo $str.PHP_EOL;
  exit(0);
}