2012-10-25 87 views
-3

在__construct中设置属性时调用了神奇方法__set吗?__set在构造函数中?

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

} 
+2

你测试它? – Maerlyn

+1

我猜想是这样,运行该代码并亲自查看并不难。 – Esailija

+1

为什么不直接实例化这个类(没有其他的方法调用)并在__set中放置一个回声,这应该告诉你。 –

回答

1

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

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

如果是从构造函数中完成,没关系。

这样调用:

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

将导致:

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