我的问题是,我们有一个班级:
class SomeClass{
private $someProperty;
public function __call($name,$arguments){
echo "Hello World";
}
现在我说:
$object = new SomeClass();
$object->someMethod();
我的班级中的__call方法将被调用。
当我说
时$object->getSomeProperty();
会再次调用__call吗? 如果是这样,__get和__set魔术方法的用途是什么?
当我说
时$object->someProperty;
那么会调用__get($ someProperty)吗?或者它会__set($ someProperty)?
答案 0 :(得分:12)
无论何时调用无法访问的方法,都会调用__call
。
无论是__get
还是echo $obj->prop;
$var = $obj->prop;
,就会被调用
最后,无论何时尝试写入属性,都会调用__set
魔法。
答案 1 :(得分:1)
会再次调用__call吗?
是
如果是这样,__get和__set魔术方法的用途是什么?
见下文:
当我说
时$object->someProperty;
那么会调用__get($ someProperty)吗?还是会的? __set($ someProperty)?
__get('someProperty')
因为此表达式不是作业。