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

我认为两者具有相同的功能,但我怀疑两者之间有什么不同……是什么?


当前回答

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

BUT

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

我还没有研究过PHP解析器,但是如果它是一个以“d”开头的长列表,以及一个以“e”开头的短列表,那么查找以“e”开头的函数名必须花费一定的时间。由于整个函数名的检查方式不同,可能会有其他差异。

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

其他回答

没有区别,它们是一样的。

PHP退出手册:

注意:这个语言结构相当于die()。

PHP模具手册:

这个语言结构相当于exit()。

Die()比exit()输入更快;

它们在本质上是相同的,尽管本文给出了不同的建议。

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

BUT

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

我还没有研究过PHP解析器,但是如果它是一个以“d”开头的长列表,以及一个以“e”开头的短列表,那么查找以“e”开头的函数名必须花费一定的时间。由于整个函数名的检查方式不同,可能会有其他差异。

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

起源差异

在PHP中die()和exit()的区别在于它们的起源。

exit()是来自C中的exit()。 die()来自Perl中的die。


的功能与

Die()和exit()是等价的函数。

PHP手册

PHP模具手册:

这个语言结构相当于exit()。

PHP退出手册:

注意:这个语言结构相当于die()。

PHP函数别名列表手册:

Die是主函数exit()的别名


不同于其他语言

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

来自另一个PHP的咆哮:

...As a C and Perl coder, I was ready to answer, "Why, exit() just bails off the program with a numeric exit status, while die() prints out the error message to stderr and exits with EXIT_FAILURE status." But then I remembered we're in messy-syntax-land of PHP. In PHP, exit() and die() are identical. The designers obviously thought "Hmm, let's borrow exit() from C. And Perl folks probably will like it if we take die() as is from Perl too. Oops! We have two exit functions now! Let's make it so that they both can take a string or integer as an argument and make them identical!" The end result is that this didn't really make things any "easier", just more confusing. C and Perl coders will continue to use exit() to toss an integer exit value only, and die() to toss an error message and exit with a failure. Newbies and PHP-as-a-first-language people will probably wonder "umm, two exit functions, which one should I use?" The manual doesn't explain why there's exit() and die(). In general, PHP has a lot of weird redundancy like this - it tries to be friendly to people who come from different language backgrounds, but while doing so, it creates confusing redundancy.