来自PHP documentation on overloading:
的引用在isset()之外的其他语言结构中不能使用重载属性。这意味着如果在重载属性上调用empty(),则不会调用重载方法。
要解决该限制,必须将重载属性复制到作用域中的局部变量中,然后将其传递给empty()。
这是否真的意味着我不能使用像
这样的东西if (empty($this->foobar))
在一个类中,$this->foobar
是一个魔法属性,通过__get()
解决,还是我在这里误解了什么?
答案 0 :(得分:3)
如果您也覆盖__isset
方法,它也会有效。文档编写原因是因为您无法在方法调用的结果上调用empty() or isset()
。