Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP中的die()和exit()有什么区别?_Php_Exit_Die - Fatal编程技术网

PHP中的die()和exit()有什么区别?

PHP中的die()和exit()有什么区别?,php,exit,die,Php,Exit,Die,PHP中的die()和exit()函数有什么区别 我认为两者都有相同的功能,但我怀疑两者有什么不同。。。这是什么?没有区别——它们是一样的 PHP手册: 注:此语言结构等同于 PHP手册: 此语言结构相当于 它们本质上是相同的,尽管这表明情况并非如此 听起来差不多,但是exit()还允许您设置PHP脚本的退出代码 通常您并不真正需要它,但是在编写控制台PHP脚本时,您可能希望使用Bash等工具检查脚本是否以正确的方式完成了所有工作 然后您可以使用exit()并稍后捕获它。 但是,Die()不支持

PHP中的
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