我有一个实现ArrayAccess
接口的类。我注意到我可以在偏移值上使用empty
函数而没有错误:
$class = new MyArrayClass();
if(!empty($class["offset"]))
...
else
die("Empty!!!");
然而,甚至调用offsetGet
接口方法都不起作用:
if(!empty($class->offsetGet("offset")))
抛出标准错误:
无法在写入上下文中使用函数返回值。
我的问题是:为什么empty
适用于getters和virtual array offsets?据我所知,它们实际上是函数返回值,而不是变量......
这个问题相当具有教育性和实用性。我只是好奇。请尽量解释。