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

PHP die()exit()函数有什么区别?

我认为两者都具有相同的function,但是我怀疑这两者有什么不同…这是什么?

没有区别 – 他们是一样的。

PHP手册exit

注意:这个语言结构等同于die()

PHP手册die

这个语言结构等同于exit()

原产地的差异

在PHP中die()exit()之间的区别是它们的起源

  • exit()来自C中的 exit()
  • die()来自Perl中的 die

function等同

die()exit()等价的函数。

PHP手册

PHP手册die

这个语言结构等同于exit()

PHP手册exit

注意:这个语言结构等同于die()

函数别名列表的 PHP手册:

die是主函数的别名exit()


不同于其他语言

die()exit() 在其他语言中不同的,但在PHP中它们是相同的。

从另一个PHP的咆哮 :

…作为一个C和Perl编码器,我已经准备好回答:“为什么exit()只是用程序退出状态退出程序,而die()将错误信息输出到stderr并以EXIT_FAILURE状态退出。 “ 但是后来我记得我们在PHP的混乱语法领域。

在PHP中,exit()和die()是相同的。

devise者显然认为:“嗯,让我们从C中借用exit(),如果我们从Perl中拿走die(), Perl的人可能也会喜欢它了!哎呀!现在我们有两个退出函数了!可以用一个string或整数作为参数,并使它们相同!“

最终的结果是,这并没有让事情变得更容易,更令人困惑。 C和Perl编码器将继续使用exit()来抛出一个整数退出值,而die()抛出一个错误消息并以失败退出。 新手和PHP作为一个第一语言的人可能会想“哦,两个退出function,我应该使用哪一个? 手册没有解释为什么有exit()和die()。

一般来说,PHP有这么多奇怪的冗余 – 它试图对来自不同语言背景的人友好,但这样做会造成冗余。

如前所述,这两个命令产生相同的parsing器令牌。

有一个小小的差异,那就是parsing器返回令牌需要多长时间。

我没有研究PHPparsing器,但是如果它是以“d”开头的一长串函数和以“e”开头的较短列表,那么在函数名称中查找函数名称必须是“ E”。 由于如何检查整个函数名称,可能还有其他的不同之处。

我怀疑这将是可衡量的,除非你有一个“完美”的环境,专门用于parsingphp和许多不同的参数请求。 但毕竟PHP必须有所不同,PHP是一种解释型语言。

PHP上的手册:

死 – 相当于退出

你甚至可以die;exit; – 有或没有parens。

exit()上selectdie()的唯一好处可能是你在input一个额外的字母时的空闲时间;-)

正如所有其他正确的答案所说, dieexit是相同/别名。

虽然我有一个个人的惯例,当我想要在预期和期望的时候结束脚本的执行时,我使用exit; 。 当我需要结束执行由于一些问题(不能连接到数据库,不能写入文件等),我使用die("Something went wrong."); 以“杀死”脚本。

当我使用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. 

当我使用模具时:

 $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 ,我知道我想继续执行,但是我不能或者不应该由于之前的执行错误。

当然,这只适用于单独的项目。 当有更多的人没有人会阻止他们使用dieexit ,这不符合我的习俗…

这个页面说dieexit的盟友,所以他们是相同的。 但也解释说:

有些函数会因API清理或其他原因而更改名称,而旧名称只能作为别名保留,以便向后兼容。 使用这些别名通常是一个坏主意,因为它们可能会过时或重命名,这将导致不可移植的脚本。

所以,叫我偏执狂,但将来可能没有die

他们本质上是相同的,虽然这篇文章另有build议。

使用命令行时,

  die("Error"); 

将打印到“错误”到STDOUT并退出,错误代码为0。

如果你想退出错误代码1,你必须:

  fwrite(STDERR, "Error"); exit(1); 

从命令行或shell脚本执行php脚本时可能会很有用,并且希望查看脚本是否以非零退出代码终止。 从Quora复制charanjeet的答案

至less我在脚本中注意到的一点是,exit()将停止当前正在执行的脚本,并将控制权交还给任何调用脚本,而死亡则会阻止php的轨道。 我会说这是一个很大的区别?

在function上,它们是相同的。 所以select使用哪一个完全是个人喜好。 在语义上,它们是不同的。 死声音消极。 当我有一个将JSON数据返回给客户端并终止程序的函数时,如果我调用这个函数jsonDie(),可能会很糟糕,并且把它叫做jsonExit()更合适。 出于这个原因,我总是使用exit而不是die。

在w3schools测验:die()和exit()函数做同样的事情? 我的回答是错误的。 这是不正确的答案。 正确的答案是正确的。

这是截图: 在这里输入图像描述

它们的声音差不多,但是,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"); ?>