8

我见过一些代码这样做:

if(something){
    echo 'exit from program';
    die;
}
...more code

和其他只使用die

if(something)   die('exit from program');
...more code

它何时结束程序是否有任何内在差异,我应该知道它之后的代码吗?等等

更新

我主要是问,它是否是一种编码风格,或者是否有真正的原因为什么有些编码方式是一种方式而不是另一种方式。我不是在问exit和之间有什么区别die

4

7 回答 7

21

不,没有区别;它们都将写入"exit"STDOUT 并终止程序。

我更喜欢这种die("exit")方法,因为它打字更少,更容易注释掉并且语义更清晰。

至于“速度”,你为什么要关心哪个更快?你需要你的程序很快死掉吗?

回复:你的更新

...结束程序的任何固有差异...

没有区别,固有或其他的。它们是相同的。第二个选项 ,die('exit')是单个语句,因此在与语句一起使用时不需要大括号if;这与dieC 风格语言中的块和流控制无关。

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

您选择哪种方式die是个人喜好的问题。正如我所说,它们是相同的。出于上面列出的原因,我会选择第二个选项:更短、更清晰、更干净,在我看来这相当于“更好”。

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

于 2011-04-28T21:04:36.577 回答
1

没有不同。

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

于 2011-04-28T21:05:55.010 回答
0

有区别的家伙。DIE() 可以与其他可失败的函数一起使用,而回显则需要作为错误或异常来捕获。

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

为您提供即时捕获/死亡序列。

于 2011-04-28T21:34:57.657 回答
0

对于您发布的具体示例,它们是相等的,因为它$status是一个字符串,但正如手册所说,情况可能并非总是如此:

如果 status 是一个字符串,这个函数在退出之前打印状态。

如果 status 是一个整数,则该值将用作退出状态而不打印。退出状态应在 0 到 254 的范围内,退出状态 255 由 PHP 保留,不得使用。状态 0 用于成功终止程序。

因此,如果'exit from program'您不想输出,而是说42您确实需要这样做:

echo 42; die();
于 2011-04-28T21:42:25.630 回答
0

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

于 2011-04-28T22:04:59.193 回答
0

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

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!":"");
于 2011-04-28T22:48:02.200 回答
0

来自 php 手册:

注意:这个语言结构等价于 die()。

但是dieexit之间仍然存在区别:

使用 die() 你可以发布一个字符串: die("An error occurred");

使用 exit() 的结果相同

<?php
    echo("An error occurred <br>");
    exit(0);
?>

或者,如果您是 cli 或 unix shell:

在命令行上使用 PHP,die("An error occurred") 简单地将“An error occurred”打印到 STDOUT 并以正常退出代码 0 终止程序。

<?php
    fwrite(STDERR, "An error occurred \n");
    exit(0); //
?>
于 2015-01-02T16:39:20.297 回答