PHP中的die()和exit()有什么区别?
PHP中的PHP中的die()和exit()有什么区别?,php,exit,die,Php,Exit,Die,PHP中的die()和exit()函数有什么区别 我认为两者都有相同的功能,但我怀疑两者有什么不同。。。这是什么?没有区别——它们是一样的 PHP手册: 注:此语言结构等同于 PHP手册: 此语言结构相当于 它们本质上是相同的,尽管这表明情况并非如此 听起来差不多,但是exit()还允许您设置PHP脚本的退出代码 通常您并不真正需要它,但是在编写控制台PHP脚本时,您可能希望使用Bash等工具检查脚本是否以正确的方式完成了所有工作 然后您可以使用exit()并稍后捕获它。 但是,Die()不支持
die()
和exit()
函数有什么区别
我认为两者都有相同的功能,但我怀疑两者有什么不同。。。这是什么?没有区别——它们是一样的 PHP手册: 注:此语言结构等同于 PHP手册: 此语言结构相当于
它们本质上是相同的,尽管这表明情况并非如此 听起来差不多,但是exit()还允许您设置PHP脚本的退出代码 通常您并不真正需要它,但是在编写控制台PHP脚本时,您可能希望使用Bash等工具检查脚本是否以正确的方式完成了所有工作 然后您可以使用exit()并稍后捕获它。 但是,Die()不支持这一点 Die()始终存在,代码为0。 因此,实际上,die()命令执行以下操作:
<?php
echo "I am going to die";
exit(0);
?>
这与:
<?php
die("I am going to die");
?>
如前所述,这两个命令产生相同的解析器令牌 但是 有一个小的区别,那就是解析器返回令牌所需的时间 我没有研究过PHP解析器,但是如果它是一个以“d”开头的函数的长列表,以及一个以“e”开头的较短列表,那么查找以“e”开头的函数的函数名时一定会有时间代价。由于检查整个函数名的方式不同,可能还有其他差异 我怀疑它是否是可测量的,除非您有一个专门用于解析PHP的“完美”环境,以及许多具有不同参数的请求。 但必须有区别,毕竟PHP是一种解释性语言。PHP手册: 模具-相当于退出 你甚至可以做
die代码>与退出的方式相同代码>-带或不带参数
选择die() 说die
是exit
的alies,所以它们是相同的。但也解释说:
有些函数由于API清理或其他原因更改了名称,而旧名称仅作为别名保留以实现向后兼容性。使用这类别名通常不是一个好主意,因为它们可能会过时或重命名,这将导致不可移植的脚本
所以,叫我偏执狂吧,但未来可能不会有死亡。起源不同
PHP中和的区别在于它们的来源
- 是从哪里来的
- 是从哪里来的
功能等效
和是等价函数。
手册
PHP手册:
此语言结构相当于
PHP手册:
注:此语言结构等同于
PHP手册:
是主函数的别名
与其他语言不同
和在其他语言中不同,但在PHP中是相同的
发件人:
…作为一名C和Perl程序员,我随时准备回答:“为什么,exit()会自动退出?”
以数字退出状态退出程序,同时die()打印
发送到stderr的错误消息,并退出,退出状态为“失败”
我记得我们在PHP的混乱语法世界里
在PHP中,exit()和die()是相同的
设计师们显然认为“嗯,让我们借用一下.和Perl
如果我们也这么做,人们可能会喜欢的。
哎呀!我们现在有两个退出函数!让我们把它们都设置为
可以将字符串或整数作为参数并使其相同!”
最终的结果是,这并没有真正让事情变得“更容易”,
只是更让人困惑。C和Perl编码器将继续使用exit()来
仅抛出一个整数退出值,并使用die()抛出一条错误消息
以失败告终。新手和PHP作为第一语言的人
可能会想“嗯,两个退出功能,我应该选择哪一个?”
使用?“手册没有解释为什么会有exit()和die()
一般来说,PHP有很多像这样奇怪的冗余——它试图
对来自不同语言背景的人友好,
但在这样做的同时,它产生了令人困惑的冗余
正如所有其他正确答案所说,die
和exit
是相同的/别名
尽管我有一个个人惯例,当我想要在预期和期望的时候结束脚本的执行时,我使用exit代码>。当我由于一些问题(无法连接到db、无法写入文件等)需要结束执行时,我使用die(“出错”)
以“杀死”脚本
当我使用exit时:
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
时,我知道我想继续执行,但由于上一次执行中的错误,我不能或不应该继续执行
当然,这只适用于单独处理项目的情况。当有更多的人时,没有人会阻止他们在不符合我惯例的地方使用死亡
或退出
。功能上,他们是相同的。所以选择使用哪一种完全是个人的喜好。在英语中,它们在语义上是不同的。死亡听起来很消极。当我有一个将JSON数据返回给客户端并终止程序的函数时,如果我调用这个函数jsonDie(),那会很糟糕,而调用它jsonExit()更合适。由于这个原因,我总是使用exit而不是die。的这个输出演示了die和exit在功能上是相同的。
我在脚本中至少注意到,exit()将停止当前正在执行的脚本,并将控制权传递回任何调用
function die($msg){
exit($msg);
}
<?php
header('HTTP/1.1 304 Not Modified');
die();
?>
<?php
header('HTTP/1.1 304 Not Modified');
exit();
?>
HTTP/1.1 304 Not Modified
Connection: Keep-Alive
Keep-Alive: timeout=5, max=100
HTTP/1.1 304 Not Modified
Connection: close