我见过一些代码这样做:
if(something){
echo 'exit from program';
die;
}
...more code
其他只使用die
的人:
if(something) die('exit from program');
...more code
它何时结束程序有什么固有的区别,我应该知道它之后的代码吗?诸如此类
更新
我主要是问,如果它是一种编码风格,或者是否有一个真正的原因,为什么有些编码方式与另一种方式编码。我不是问exit
和die
之间有什么区别。
答案 0 :(得分:21)
不,没有区别;他们都会将"exit"
写入STDOUT并终止程序。
我更喜欢die("exit")
方法,因为它更少打字,更容易评论和语义更清晰。
就“速度”而言,为什么你会关心哪个更快?你需要你的程序很快死吗?
RE:您的更新
......结束该计划的任何内在差异......
没有区别,固有或其他。他们是完全相同的。第二个选项die('exit')
是单个语句,因此在与if
语句一起使用时不需要括号;这与die
无关,与C风格语言中的块和流控制无关。
RE:您的评论/第二次更新
您die
的哪种方式取决于个人偏好。正如我所说,他们是相同的。由于上面列出的原因,我会选择第二个选项:更短,更清晰,更清洁,在我看来相当于“更好”。
exit
和die
之间的区别在于exit
允许您返回非零状态,而die
则返回0.两个函数都不是“更好”,它们用于不同的目的。
答案 1 :(得分:1)
为什么在你死后要求速度差异。
答案 2 :(得分:0)
有个不同的人。 DIE()可以与其他可用函数一起使用,而回显则需要作为错误或异常捕获。
$query = mysql_query("SELECT * FROM tablename") OR DIE(mysql_error());
为您提供即时捕获/死亡序列。
答案 3 :(得分:0)
对于您发布的具体示例,它们是相同的,因为$status
是一个字符串,但the manual表示情况可能并非总是如此:
如果status是字符串,则此函数 在退出之前打印状态。
如果status是整数,那么该值 将用作退出状态和 没打印。退出状态应该是 在0到254范围内,退出状态 255由PHP保留,不得 使用。状态0用于 成功终止程序。
因此,如果您要输出'exit from program'
而不是42
,请说明{/ 1}}:
echo 42; die();
答案 4 :(得分:0)
语言结构exit()
和die()
是等效的,至少根据PHP手册。我应该在达到该行时使用exit()并且我希望脚本在该点停止。另一方面,Die()适用于不应发生的情况。这对我来说是最自然的,你不必同意。
答案 5 :(得分:0)
主要是它的编码风格。但是,如果要输出调试消息,那么echo就更好了:
echo "The frobnuticator blew up!";
die;
变为
//echo "The frobnusticator blew up!";
die;
当然,你最有可能
if ($debug) echo "The frobnusticator blew up!";
die;
在(我的)眼睛比
更容易die($debug?"The frobnusticator blew up!":"");
答案 6 :(得分:0)
来自php手册:
注意:此语言构造等同于die()。
但死和退出之间仍有区别:
使用die()你可以发一个字符串:die(“发生错误”);
使用exit()
的结果相同<?php
echo("An error occurred <br>");
exit(0);
?>
或者如果您是cli或unix shell:
在命令行中使用PHP,die(“发生错误”)只是向STDOUT输出“发生错误”并以正常退出代码0终止程序。
<?php
fwrite(STDERR, "An error occurred \n");
exit(0); //
?>