Kor*_*gay 6 php get set magic-methods
这是我的代码:
<?php
class SampleClass {
    public function __get($name){
        echo "get called";
        echo $name;
    }
    public function __set($name, $value) {
        echo "set called";
    }
}
?>
我的索引文件:
$object = new SampleClass();
$object->color = "black";
echo $object->color;
如果我按原样运行此代码,则输出如下:
set calledget calledcolor
但是,如果我发表评论
public function __set($name, $value) {
    echo "set called";
}
上面的部分(只有这部分),然后输出将是:
black
那么这里发生了什么?
这是对正在发生的事情的解释。在你的第一个例子中。您从未将值存储在对象中,也不存在声明的属性。这echo $object->color;实际上从未执行任何操作,因为 . 没有返回任何内容__get。
在第二个示例中,您为对象中的属性分配了一个值。由于您没有在对象中声明该属性,因此默认情况下会将其创建为公共属性。由于它是公开的,因此__get在访问它时永远不会被调用。