Php 为什么empty()在接受getter输出时不接受函数返回值?

Php 为什么empty()在接受getter输出时不接受函数返回值?,php,Php,我有一个实现接口的类。我注意到我可以在偏移值上使用函数,没有错误: $class = new MyArrayClass(); if(!empty($class["offset"])) ... else die("Empty!!!"); 但是,即使调用offsetGet接口方法也不起作用: if(!empty($class->offsetGet("offset"))) 它抛出标准错误: 无法在写入上下文中使用函数返回值。 我的问题是:为什么要在和上工作?据我所知,它们实际

我有一个实现接口的类。我注意到我可以在偏移值上使用函数,没有错误:

$class = new MyArrayClass();
if(!empty($class["offset"])) 
   ...
else
   die("Empty!!!");
但是,即使调用
offsetGet
接口方法也不起作用:

if(!empty($class->offsetGet("offset"))) 
它抛出标准错误:

无法在写入上下文中使用函数返回值。

我的问题是:为什么要在和上工作?据我所知,它们实际上是函数返回值,而不是变量

这个问题很有教育意义,但不实用。我只是好奇。请尽可能多地解释。

在php版本中,小于5.5的版本只接受变量

从变更日志:

5.5.0 empty()现在支持表达式,而不仅仅是变量


请参阅:请注意,如果您使用PHP5.5+(在
E_通知上有一个警告)
,这将很好地工作: