为什么PHP不允许使用\empty和\isset?

3
据我所知,emptyisset 是普通的 函数。当我尝试以下操作时,会出现语法错误
if (\empty($array)) {
   // .....
}

PHP解析错误:语法错误,意外的“empty”(T_EMPTY),期望标识符(T_STRING)在
这对我来说很奇怪,因为其他 函数 http://php.net/manual/en/ref.var.php,如 \is_array、\is_null、\is_object、\strpos 等等都允许反斜杠。
为什么这两个函数不同呢?

错误听起来像是你缺少了一个 ; 或者类似于 emptyisset 这样的 PHP 支持。导致这个错误的实际代码行是什么? - user7236046
1个回答

16
据我所知,emptyisset 不是普通的 函数。它们其实是语言结构(language constructs),可以看做是关键字。如果它们遵循函数的规则,它们不可能完成它们现在的功能。例如,isset($foo) 会触发一个未定义变量的错误,因为 PHP 将会在将 变量的值 传递给函数 isset 之前尝试解析变量 $foo。显然,这和这些 语言结构 的原本用途背道而驰。

所以 isset 不是一个函数,也不能成为一个函数来处理未定义的变量而不发送错误/警告。这很清楚,谢谢。但是 empty 呢?为什么它不是一个普通的函数,因为它的行为与函数完全相同。 - smarber
不,emptyisset都不像函数一样运作:它们明确处理未定义的变量。 - deceze
2
你可能会对以下内容感兴趣:PHP的isset和empty指南 - deceze

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接