<?php
define('foo', 'bar');
if (empty(foo)) {
echo 'qux';
}
Run Code Online (Sandbox Code Playgroud)
http://codepad.org/G1TSK1c6
解析错误:语法错误,意外的')',预计第4行为T_PAAMAYIM_NEKUDOTAYIM
我知道empty()只允许将变量作为参数传递,但是::当我给它一个常量时,为什么它会期望一个T_PAAMAYIM_NEKUDOTAYIM(即)?
解析器想要的下一个逻辑事物是 a::因为它foo不是变量。
if (empty(foo::$bar)) {
}
Run Code Online (Sandbox Code Playgroud)
empty()是唯一在不传递变量时起作用的东西。您的示例被评估为empty(bar)解析器假定bar是一个类名,并且现在需要一个静态成员变量。