'死'和'退出'之间的区别

时间:2012-10-03 06:20:38

标签: php exit die

  

可能重复:
  what are the differences in die() and exit() in PHP?

我对dieexit的区别感到困惑。

大多数程序员都这样使用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)在这些例子中,我可以与退出交换模具,反之亦然吗?

     

2)这些也有区别。

干杯...

5 个答案:

答案 0 :(得分:17)

根据Die,它等同于退出。所以是的,你可以互换它们。

答案 1 :(得分:13)

使用命令行时,

die("Error");

STDOUT打印为“错误”并退出,错误代码为0

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

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

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

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

P.S。以上信息来自php.net/exit

答案 2 :(得分:9)

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

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

由于API和保持向后兼容性,两个函数都保持不变。

这是另一个例子:

is_int()和is_integer()也相同。

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

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

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

这可以帮助你:)

答案 3 :(得分:6)

dieexit函数的别名。

php中有许多函数别名,因为语言的演变,演变和克服 - http://www.php.net/manual/en/aliases.php

答案 4 :(得分:5)

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

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