请问isset()触发__get以及为什么?

ORM*_*ORM 9 php isset

class a {
   function __get($property){...}
}

$obj = new a();
var_dump(isset($obj->newproperty));
Run Code Online (Sandbox Code Playgroud)

似乎答案不是,但为什么?

Yac*_*oby 19

因为它检查__isset而不是使用__get检索它.

调用__isset是一个更好的选择,因为什么是空的没有标准.也许在类的上下文中null是可接受的值.你也可以有一个类,如果该成员不存在,它返回一个新的空对象,这将破坏,isset($myObj->item)因为在这种情况下它总是返回true.