__set在构造函数中?

时间:2012-10-25 09:32:45

标签: php constructor magic-methods

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

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

}

1 个答案:

答案 0 :(得分:1)

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

  

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

如果从构造函数完成它并不重要。

如此调用:

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

将导致:

object(MyClass)#1 (1) { ["property"]=> string(11) "other value" }