虽然我有一个个人约定,当我想在预期和期望时结束脚本的执行时,我使用 exit; . 当我因为一些问题(无法写入文件等)而需要结束执行时,我使用 die("Something went wrong."); 来编写脚本"kill" .
当我使用退出时:
header( "Location: http://www.example.com/" ); /* Redirect browser */
/* Make sure that code below does not get executed when we redirect. */
exit; // I would like to end now.
当我使用die:
$data = file_get_contents( "file.txt" );
if( $data === false ) {
die( "Failure." ); // I don't want to end, but I can't continue. Die, script! Die!
}
do_something_important( $data );
这样,当我在代码中的某个时刻看到 exit 时,我知道此时我想退出,因为逻辑在这里结束 . 当我看到 die 时,我知道我'd like to continue execution, but I can' t或者不应该由于先前执行中的错误 .
当然,这仅适用于单独处理项目时 . 当有更多的人没有人会阻止他们使用 die 或 exit 它不适合我的约定...
17 回答
据我所知,当我看到这个问题here
它说“在PHP中,Header输出有明显的区别 . 在下面的例子中,我选择使用不同的 Headers 但是为了显示exit()和die()之间的区别并不重要”,并经过测试(个人)
它们听起来大致相同,但是,exit()还允许您设置PHP脚本的退出代码 .
通常你真的不需要这个,但是在编写控制台PHP脚本时,如果脚本以正确的方式完成所有操作,你可能想要检查Bash .
然后你可以使用exit()并在以后捕获它 . 然而,Die()并不支持这一点 .
Die()始终存在,代码为0.因此,基本上die()命令执行以下操作:
这与:
如前所述,这两个命令产生相同的解析器令牌 .
但
有一点不同,那就是解析器返回令牌需要多长时间 .
我还没有研究过PHP解析器,但是如果它是以“d”开头的一长串函数列表,以及以“e”开头的较短列表,那么查找以“是”开头的函数的函数名必须有时间惩罚 . E” . 由于如何检查整个函数名称,可能还存在其他差异 .
我怀疑它是可测量的,除非你有一个专门解析PHP的“完美”环境,以及许多不同参数的请求 . 但是必定存在差异,毕竟PHP是一种解释型语言 .
没有区别 - 它们是一样的 .
PHP手册exit:
PHP手册die:
正如所有其他正确答案所述,
die
和exit
是相同/别名 .虽然我有一个个人约定,当我想在预期和期望时结束脚本的执行时,我使用
exit;
. 当我因为一些问题(无法写入文件等)而需要结束执行时,我使用die("Something went wrong.");
来编写脚本"kill" .当我使用退出时:
当我使用die:
这样,当我在代码中的某个时刻看到
exit
时,我知道此时我想退出,因为逻辑在这里结束 . 当我看到die
时,我知道我'd like to continue execution, but I can' t或者不应该由于先前执行中的错误 .当然,这仅适用于单独处理项目时 . 当有更多的人没有人会阻止他们使用
die
或exit
它不适合我的约定...使用命令行时,
将打印到“错误”到STDOUT并退出,错误代码为0 .
如果要退出错误代码1,则必须:
从命令行或shell脚本执行php脚本时,它可能很有用,并且您希望查看脚本是否以非零退出代码终止 . 从Quora复制了charanjeet的答案
功能方面它们是相同的但我在以下场景中使用它们来使代码可读:
出现错误时使用“die”并且必须停止执行 .
例如
die( 'Oops! Something went wrong' );
没有错误时使用“exit”并且必须停止执行 .
例如
exit( 'Request has been processed successfully!' );
exit()函数和die()函数的结果总是相同的 . 但正如别名手册页(http://php.net/manual/en/aliases.php)中所述,它说die()函数调用exit函数 . 我认为它的硬编码如下:
对于小型,中型和大型项目而言,这不是性能问题,但如果项目有数十亿乘以数十亿倍的数十亿个进程,则会发生非常重要的性能优化状态 .
但是大多数人并不认为这是一个问题,因为如果你有那么多进程,你必须考虑比函数是主函数还是别名更多的问题 .
但是,确切的答案是;总的来说,master函数比别名更快 .
最后; Alias manual page说,你可能不再使用死亡 . 它只是一个别名,不推荐使用 .
这是非常有趣的事情 . 虽然
exit()
和die()
是等价的,exit()
closes 连接 .die()
doesn't close 连接 .exit()
:die()
:Results:
exit()
:die()
:只是需要考虑到你的项目 .
积分:https://stackoverflow.com/a/20932511/4357238
起源不同
PHP中die()和exit()之间的区别在于它们 origin .
exit()来自exit() in C .
die()来自die in Perl .
FUNCTIONALLY EQUIVALENT
die()和exit()是 equivalent functions.
PHP手册
PHP手册die:
PHP手册exit:
PHP手册List of Function Aliases:
其他语言不同
die()和exit()是 different in other languages 但在PHP中它们是相同的 .
从Yet another PHP rant:
在功能上,它们是相同的 . 因此,选择使用哪一个完全是个人偏好 . 在语义上用英语表示,它们是不同的 . 死听起来很消极 . 当我有一个函数将JSON数据返回给客户端并终止程序时,如果我调用这个函数jsonDie()可能会很糟糕,并且更适合将其称为jsonExit() . 出于这个原因,我总是使用退出而不是死 .
我在脚本中至少注意到的一点是,exit()将停止当前正在执行的脚本并将控制权传递回任何调用脚本,而die将在其轨道中停止php . 我会说这是一个很大的区别?
This page说
die
是exit
的属性,所以它们是相同的 . 但也解释说:所以,叫我偏执,但将来可能没有
die
.它们本质上是相同的,尽管这是另外的建议 .
来自https://3v4l.org的此输出表明模具和出口在功能上是相同的 .
在w3schools测验:die()和exit()函数完全相同吗?我的回答是假的 . 这是错误的答案 . 正确的答案是对的 .
这是截图:
关于die的PHP手册:
您甚至可以像
exit;
一样die;
- 有或没有parens .选择
die()
超过exit()
的唯一好处,可能是您在输入额外信件时的时间;-)