-3

在__construct中设置属性时是否调用了魔术方法__set?

class MyClass
{
    public function __construct()
    {
        $this->property = 'something';
    }
    public function __set($name,$value)
    {
        $this->{$name} = ($name == 'property')?'other value':$value;
    }

}
4

1 回答 1

1

这是完全合法的。从手册:

__set() 在将数据写入不可访问的属性时运行。

是否从构造函数完成并不重要。

所以调用:

$x = new MyClass();
var_dump($x);

将导致:

object(MyClass)#1 (1) { ["property"]=> string(11) "other value" }
于 2012-10-25T09:37:55.627 回答