exit()
来自C 中的exit()
。die()
来自Perl 中的die
。PHP die
手册:
这种语言构造等效于
exit()
。
PHP exit
手册:
注意:此语言构造等效于
die()
。
PHP函数别名列表手册:
die()
和exit()
在其他语言中是不同的,但是在 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 是一种解释型语言。