Php echo(';exit';)和;死亡然后死(';退出';);?

Php echo(';exit';)和;死亡然后死(';退出';);?,php,echo,exit,die,Php,Echo,Exit,Die,我看到一些代码可以做到这一点: if(something){ echo 'exit from program'; die; } ...more code 而其他只使用的人则会死亡: if(something) die('exit from program'); ...more code 在结束程序的时间上是否有任何内在的区别,我是否应该知道它后面的代码?等等 更新 我主要是问,这是否是一种编码风格,或者是否有一个真正的原因,为什么有些编码是一种方式而另一种方式。我不是问退

我看到一些代码可以做到这一点:

if(something){
    echo 'exit from program';
    die;
}
...more code
而其他只使用
的人则会死亡

if(something)   die('exit from program');
...more code
在结束程序的时间上是否有任何内在的区别,我是否应该知道它后面的代码?等等

更新


我主要是问,这是否是一种编码风格,或者是否有一个真正的原因,为什么有些编码是一种方式而另一种方式。我不是问退出和死亡之间有什么区别。

不,没有区别;它们都会将
“exit”
写入标准输出并终止程序

我更喜欢
die(“exit”)
方法,因为它打字更少,注释更容易,语义更清晰

至于“速度”,你为什么会在意哪个更快?你需要你的程序很快消亡吗

RE:您的更新

。。。在结束程序的时间上有任何固有的差异

无论是内在的还是其他的,都没有区别。他们一模一样。第二个选项,
die('exit')
是一条语句,因此与
if
语句一起使用时不需要大括号;这与
die
无关,与C风格语言中的块和流控制有关

RE:您的评论/第二次更新

你死的方式取决于个人喜好。正如我所说,它们是相同的。我选择第二个选项是因为上面列出的原因:更短、更清晰、更干净,在我看来这相当于“更好”

exit
die
之间的区别在于
exit
允许您返回非零状态,而
die
返回0。这两种功能都不是“更好”,它们有不同的用途。

没有区别


既然你要死了,为什么还要要求速度差呢。

伙计们,这是不同的。DIE()可以与其他可失败的函数一起使用,而回音需要作为错误或异常捕获

$query = mysql_query("SELECT * FROM tablename") OR DIE(mysql_error());

为您提供一个立即捕获/死亡序列

对于您发布的特定示例,它们是相等的,因为
$status
是一个字符串,但正如所述,情况可能并不总是如此:

如果状态为字符串,则此函数 在退出之前打印状态

如果状态为整数,则该值 将用作退出状态和 没有印刷。退出状态应为 在0到254的范围内,退出状态 255由PHP保留,不应 被使用。状态0用于 成功终止程序

因此,如果您不想输出
“退出程序”
,而想输出
42
,则您确实需要执行以下操作:

echo 42; die();

至少根据PHP手册,语言结构
exit()
die()
是等效的。我在应该到达该行时使用exit(),并希望脚本在该点停止。另一方面,Die()用于不应该发生的情况。这对我来说是最自然的,你不必同意。

主要是编码风格。但是,如果您正在输出调试消息,则echo then die更好:

echo "The frobnuticator blew up!";
die;
变成

//echo "The frobnusticator blew up!";
die;
当然,你很可能

if ($debug) echo "The frobnusticator blew up!";
die;
在(我的)眼睛上比在(我的)眼睛上容易得多


来自php手册:

注意:此语言构造相当于die()

但是死亡退出之间仍然存在差异:

使用die()可以发布一个字符串:die(“发生错误”)

使用exit()的结果相同


或者如果您是cli或unix shell:

在命令行上使用PHP,die(“发生错误”)只需将“发生错误”打印到STDOUT,并使用正常的退出代码0终止程序

<?php
    fwrite(STDERR, "An error occurred \n");
    exit(0); //
?>


我真的不认为这是一个值得注意的问题,PHP允许你不止一种方式去做它。别担心。@Frits:这不是一个bug,它是故意的行为,类似于能够使用
print
echo
@Frits不,从任何合理的定义来看,这都不是bug。@Frits哈哈,你不可能是认真的。通用语言有无数种做同样事情的方法。这就是重点。我猜任何
1+1==1--1
的语言都充满了bug。活得快,死得早,留下一个漂亮的日志文件。这可能是即将到来的机器人启示录的问题。更快的杀戮开关总是有用的=D@meagar这就引出了另一个问题。做
echo
然后
exit
还是
echo
然后
die
更好?@Neal实际上它提出了另一个问题。你误用了“.”这个词。好啊
提出的问题
意味着什么?真的没关系,还有一个问题。一个可能是缓慢而痛苦的,而另一个是快速而简单的,我知道什么?我不能做
死亡(42)?那没用吗?结果会怎样?@Neal:我没说它不会做任何事,但它肯定不会被回音!如果执行
die(42)
则执行结束时退出状态为42,这在CLI(命令行界面)环境中非常有用。这只是一个需要寻找的东西,因为如果你不小心(如果你做了
mysql_query(“…”)或者死了(例如mysql_errno())
),你可能会射中自己的脚。@Alix我当时的印象是只有
exit(42)
才会这样做,
die
总是带着
0
@Neal:No,它们是别名:
die-相当于exit()
,请参阅。=)@阿利克斯:这很奇怪。不知道
$query=mysql\u query(“SELECT*fromtablename”)或exit(mysql\u error())也同样有效。Die()和exit()是等价的。@Neal这与
Die
无关;您可以使用任何系列编写

<?php
    echo("An error occurred <br>");
    exit(0);
?>
<?php
    fwrite(STDERR, "An error occurred \n");
    exit(0); //
?>