echo('exit')之间有什么区别;死;并死('退出');?

时间:2011-04-28 21:03:48

标签: php echo exit die

我见过一些代码这样做:

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

其他只使用die的人:

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

它何时结束程序有什么固有的区别,我应该知道它之后的代码吗?诸如此类

更新

我主要是问,如果它是一种编码风格,或者是否有一个真正的原因,为什么有些编码方式与另一种方式编码。我不是问exitdie之间有什么区别。

7 个答案:

答案 0 :(得分:21)

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

我更喜欢die("exit")方法,因为它更少打字,更容易评论和语义更清晰。

就“速度”而言,为什么你会关心哪个更快?你需要你的程序很快死吗?

RE:您的更新

  

......结束该计划的任何内在差异......

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

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

die的哪种方式取决于个人偏好。正如我所说,他们是相同的。由于上面列出的原因,我会选择第二个选项:更短,更清晰,更清洁,在我看来相当于“更好”。

exitdie之间的区别在于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); //
?>