“死亡”和“退出”之间的区别[重复]

Posted

技术标签:

【中文标题】“死亡”和“退出”之间的区别[重复]【英文标题】:Difference between 'die' and 'exit' [duplicate] 【发布时间】:2012-09-24 01:11:10 【问题描述】:

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

我对@9​​87654322@ 和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) 还有这些的区别。

干杯...

【问题讨论】:

正如@AdamPlocher 所说,它们是一回事。使用你最喜欢的女巫。 我实际上只看到它们以其他方式使用......“或死(..)”等 :) 但就像说的那样,没有区别 mysql函数将被弃用,请使用PDO或mysqli; 【参考方案1】:

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

【讨论】:

感谢您的回答。但是你能告诉我为什么PHP lang。开发人员创建了这两个函数。我们可以在任何地方使用exit 也许 die 函数调用是为了让 Perl 程序员有宾至如归的感觉 @YogeshSuthar PHP 充满了这样的别名。其中一些是计划好的,但我会声称大部分不是。随着时间的推移,它一直在发展和变化,有些想法比其他想法更糟糕。 die 别名还可以生成有趣的代码行,例如 comply() or die(); @darvids0n enter_the_dragon() or exit(); ;)【参考方案2】:

使用命令行时,

die("Error");

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

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

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

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

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

附:以上信息来自php.net/exit

【讨论】:

+1 用于发现至少 1 个差异。 这两个函数还是没有区别的。只是通常人们使用带有消息的die 和带有退出代码的exit +1 给 ThiefMaster。您可以将最后一行更改为die(1);,而无需对行为进行任何更改。【参考方案3】:

die() 和 exit() 函数没有区别。它们都相同,工作方式相同。

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

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

这里还有一个例子:

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

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

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

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

希望对你有帮助:)

【讨论】:

如果您引用已弃用的别名,请提供示例。【参考方案4】:

dieexit 函数的别名。

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

【讨论】:

【参考方案5】:

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

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

【讨论】:

以上是关于“死亡”和“退出”之间的区别[重复]的主要内容,如果未能解决你的问题,请参考以下文章

"和'之间的区别[重复]

在 python 中使用 quit() [重复]

JQuery中“和'字符之间的区别[重复]

指针和数组之间的区别[重复]

UDID 和 UUID 之间的区别 [重复]

抽象类和特征之间的区别[重复]