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


Why does empty() not accept function return value when it accepts getter output?

我有一个实现ArrayAccess接口的类。我注意到我可以在偏移值上使用empty函数而不会出错:

$class = new MyArrayClass();
if(!empty($class["offset"])) 
   ...
else
   die("Empty!!!");

但是,即使调用offsetGet接口方法也不起作用:

if(!empty($class->offsetGet("offset"))) 

它抛出标准错误:

不能在写入上下文中使用函数返回值。

我的问题是:为什么empty适用于吸气剂和虚拟阵列偏移量?据我所知,它们实际上是函数返回值,而不是变量......

这个问题与其说是实用的,不如说是教育性的。我只是好奇。请尽量解释。

在低于 5.5 的 PHP 版本中为空,只接受变量。

从更新日志:

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