Mar*_*arz 525
没有区别 - 它们是一样的.
PHP手册exit:
注意:这种语言结构相当于
die().
PHP手册die:
这种语言结构相当于
exit().
Geo*_*ale 210
PHP die()和exit()PHP 之间的区别在于它们的起源.
PHP手册die:
这种语言结构相当于
exit().
PHP手册exit:
注意:这种语言结构相当于
die().
PHP 函数别名列表手册:
die()并且在其他语言exit()中有所不同,但在PHP中它们是相同的.
来自又一个PHP咆哮:
...作为C和Perl编码器,我准备回答:"为什么,exit()只是用数字退出状态来关闭程序,而die()将错误消息输出到stderr并以EXIT_FAILURE状态退出. " 但后来我记得我们处于混乱的PHP语法之中.
在PHP中,exit()和die()是相同的.
设计师显然认为"嗯,让我们从C借用exit().而Perl人们可能会喜欢它,如果我们也像Perl那样使用die().哎呀!我们现在有两个退出函数!让我们这样做他们俩可以将字符串或整数作为参数,使它们相同!"
最终的结果是,这并没有让事情变得"更容易",更令人困惑.C和Perl编码器将继续使用exit()仅抛出整数退出值,而die()抛出错误消息并退出失败.新手和PHP作为第一语言的人可能会想"嗯,两个退出函数,我应该使用哪一个?" 该手册没有解释为什么有exit()和die().
一般来说,PHP有很多像这样的奇怪冗余 - 它试图对来自不同语言背景的人友好,但在这样做时,它会产生令人困惑的冗余.
Bob*_*Bob 59
如前所述,这两个命令产生相同的解析器令牌.
但
这有一个很小的区别,那就是解析器返回令牌需要多长时间.
我还没有研究过PHP解析器,但是如果它是以"d"开头的一长串函数列表,以及一个以"e"开头的较短列表,则必须有一个时间惩罚查找函数名称以" E".由于如何检查整个函数名称,可能存在其他差异.
我怀疑它是可测量的,除非你有一个专门解析PHP的"完美"环境,以及许多不同参数的请求.但毕竟PHP必须有区别,因为它是一种解释型语言.
Luk*_*kas 27
正如所有其他正确答案所说,die并且exit是相同/别名.
虽然我有一个个人约定,当我想在预期和期望时结束脚本的执行时,我会使用exit;.当我因为一些问题需要结束执行(无法连接到db,无法写入文件等)时,我会用die("Something went wrong.");"杀死"脚本.
当我使用退出时:
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.
Run Code Online (Sandbox Code Playgroud)
当我使用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 );
Run Code Online (Sandbox Code Playgroud)
这样,当我exit在代码中的某个时刻看到时,我知道此时我想退出,因为逻辑在这里结束.当我看到die,我知道我想继续执行,但我不能或不应该由于先前执行中的错误.
当然,这仅适用于单独处理项目时.当有更多的人没有人会阻止他们使用die或exit不符合我的惯例...
Edw*_*ard 13
这是非常有趣的事情.虽然exit()并且die()是等效的,但die() 关闭连接.exit() 不关闭连接.
die():
<?php
header('HTTP/1.1 304 Not Modified');
die();
?>
Run Code Online (Sandbox Code Playgroud)
exit():
<?php
header('HTTP/1.1 304 Not Modified');
exit();
?>
Run Code Online (Sandbox Code Playgroud)
结果:
exit():
HTTP/1.1 304 Not Modified
Connection: Keep-Alive
Keep-Alive: timeout=5, max=100
Run Code Online (Sandbox Code Playgroud)
die():
HTTP/1.1 304 Not Modified
Connection: close
Run Code Online (Sandbox Code Playgroud)
只是需要考虑到你的项目.
致谢:https://stackoverflow.com/a/20932511/4357238
Ped*_*ozi 11
这个页面说的die是一个alies exit,所以它们是相同的.但也解释说:
由于API清理或其他原因,有些函数更改了名称,旧名称仅作为别名保留以便向后兼容.使用这些别名通常是一个坏主意,因为它们可能会被淘汰或重命名,这将导致不可移植的脚本.
所以,叫我偏执,但die未来可能没有.
在功能方面,它们是相同的,但是我在以下情况下使用它们以使代码可读:
出现错误时使用die(),必须停止执行。
例如
die( 'Oops! Something went wrong' );
当没有错误并且必须停止执行时,请使用exit()。
例如
exit( 'Request has been processed successfully!' );
| 归档时间: |
|
| 查看次数: |
246670 次 |
| 最近记录: |