在__construct中设置属性时是否调用了魔术方法__set?
class MyClass
{
public function __construct()
{
$this->property = 'something';
}
public function __set($name,$value)
{
$this->{$name} = ($name == 'property')?'other value':$value;
}
}
答案 0 :(得分:1)
这是完全合法的。从手册:
__ set()在将数据写入不可访问的属性时运行。
如果从构造函数完成它并不重要。
如此调用:
$x = new MyClass();
var_dump($x);
将导致:
object(MyClass)#1 (1) { ["property"]=> string(11) "other value" }