协慌网

登录 贡献 社区

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

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

我认为两者具有相同的功能,但我怀疑两者之间是否存在某些差异…… 这是什么?

答案

没有区别 - 它们是相同的。

PHP exit手册:

注意:此语言构造等效于die()

PHP die手册:

这种语言构造等效于exit()

原产地差异

die()exit()之间的区别是它们的origin


功能等效

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()是相同的。

设计师显然认为 “嗯,让我们从 C 借用 exit() 。如果我们也像从 Perl 一样使用 die(),那么 Perl 的人们可能会喜欢它。糟糕!我们现在有两个退出函数!让我们使它们都可以将字符串或整数作为参数,并使它们相同!”

最终结果是,这并没有使事情变得 “轻松”,反而使人更加困惑。 C 和 Perl 编码人员将继续使用 exit()仅抛弃一个整数退出值,而 die()抛弃一个错误消息并以失败退出。新手和 PHP 作为第一语言的人们可能会想知道 “嗯,两个退出函数,我应该使用哪个?” 手册没有解释为什么会有 exit()和 die()。

通常,PHP 具有许多类似这样的怪异冗余 - 它试图使来自不同语言背景的人变得友好,但是这样做却造成了混乱的冗余。

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

有一个小的区别,那就是解析器返回令牌需要多长时间。

我还没有研究过 PHP 解析器,但是如果它是一长串以 “d” 开头的函数,而又是一短串以 “e” 开头的函数,那么查找以 “” 开头的函数的函数名一定要花些时间 e”。由于检查整个函数名称的方式,可能还有其他差异。

我怀疑,除非您有一个专门用于解析 PHP 的 “完美” 环境以及许多具有不同参数的请求,否则它将无法衡量。但是一定有区别,毕竟,PHP 是一种解释型语言。