2012-09-27 39 views
1

我在抽象類(Model)中有一個魔法方法__set(),因爲我無法分配擴展模型的類的任何屬性。無論是想打印在__set方法的變量名:在抽象類中聲明的PHP魔法__set避免擴展類屬性賦值

abstract class Model 
{ 
public $data; 
public function __set($name, $value) 
{ 
echo $name; $this->$name = $value; 
} 
} 

class User extends Model 
{ 
public $id; 
} 

$u = new User(); 
$u->data = "hello"; //print "data"; 
$u->id = 123; //print NOTHING.. WHY¿? 
+0

echo $ u-> id //沒什麼 – olavra

+0

你沒有在User類中定義id嗎? –

回答

2

__set被稱爲當您嘗試分配未定義的屬性的值。在你的情況下,__set將永遠不會被調用,因爲這兩個屬性都已定義並存在。

See here輸出對於這兩個屬性都沒有任何意義,並嘗試刪除其中一個屬性聲明部分並查看輸出差異。