15

可能重复:
PHP 中 die() 和 exit() 的区别是什么?

我对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)");

根据那里的功能,我认为没有任何区别,因为两者都终止了脚本的执行。

我的问题是

1)在这些示例中,我可以将 die 与 exit 互换,反之亦然?

2)以及这些之间的区别。

干杯...

4

5 回答 5

17

根据Die相当于 exit。所以是的,你可以互换它们。

于 2012-10-03T06:21:45.603 回答
13

使用命令行时,

die("Error");

将打印到“错误”STDOUT并以错误代码退出0

如果您想以错误代码退出1,您必须:

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

从命令行或 shell 脚本执行 php 脚本时它可能很有用,并且您想查看脚本是否以非零退出代码终止。

这是我能想到的区别之一。

PS 以上信息来自 php.net/exit

于 2012-10-03T06:38:16.770 回答
9

die() 和 exit() 函数之间没有区别。它们都相同并且工作相同。

另一个问题是,如果它们相同,为什么 php 会保留这两个函数。这两个函数都是彼此函数的别名。

由于 API 和保持向后兼容性,这两个函数都被保留了。

这里还有一个例子:

is_int() 和 is_integer() 也是一样的。

PHP 中有很多函数可以用多个名称调用。在某些情况下,多个名称中没有首选名称,例如 is_int() 和 is_integer() 一样好。但是,有些函数由于 API 清理或其他原因而更改了名称,并且旧名称仅保留为别名以实现向后兼容性。使用这些别名通常不是一个好主意,因为它们可能会被淘汰或重命名,这将导致脚本不可移植。提供此列表是为了帮助那些想要将旧脚本升级到新语法的人。

您可以在以下 URL 上找到别名功能的完整列表:

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

愿这对你有帮助:)

于 2012-10-03T06:35:22.253 回答
6

dieexit函数的别名。

php 中有许多函数别名,这是由于语言如何演变、演变和克服它的 - http://www.php.net/manual/en/aliases.php

于 2012-10-03T06:31:54.500 回答
5

die 将参数打印到 STDOUT,而不是 STDERR(grep 或 2>/dev/null 将帮助您测试它​​) die 返回 shell 退出代码为 0,但 exit 可以返回其他代码让我们在 PHP 中定义 die 完全模拟:

function mydie($str){
  echo $str.PHP_EOL;
  exit(0);
}
于 2012-10-03T07:15:36.207 回答