2012-10-25 88 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" } 
相關問題