“死亡”和“退出”之间的区别[重复]
Posted
技术标签:
【中文标题】“死亡”和“退出”之间的区别[重复]【英文标题】:Difference between 'die' and 'exit' [duplicate] 【发布时间】:2012-09-24 01:11:10 【问题描述】:可能重复:what are the differences in die() and exit() in php?
我对@987654322@ 和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】:die
是exit
函数的别名。
由于语言的演变、演变和克服它的方式,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);
【讨论】:
以上是关于“死亡”和“退出”之间的区别[重复]的主要内容,如果未能解决你的问题,请参考以下文章