如果我使用神奇的方法。在使用反射API時,我無法調查類屬性。爲什麼會這樣呢?魔法方法+反射API =不能調查類屬性。爲什麼?
編輯
什麼是反射API?請不要轉介我php.net我didnt諒解..引導我在你的話plsss
如果我使用神奇的方法。在使用反射API時,我無法調查類屬性。爲什麼會這樣呢?魔法方法+反射API =不能調查類屬性。爲什麼?
編輯
什麼是反射API?請不要轉介我php.net我didnt諒解..引導我在你的話plsss
使用神奇的方法來訪問屬性,這些屬性通常不會出現在類的定義。
您的類的定義一般是這樣的:
class MyClass {
private $data;
public function __get($name) {
return $this->data[$name];
}
public function __set($name, $value) {
$this->data[$name] = $value;
}
}
由於沒有不動產 - 只有一個$data
陣列上,這將是由魔術方法__get
使用一個__set
作爲一個大型數據存儲 - 反射API無法看到這些數據。
這就是由於使用魔術方法的一個問題:它們被用來訪問屬性(或方法,以__call
)不屬於那裏 - 反射API只能看到那裏的東西。
反轉並詢問關鍵詞「Reflecton API」whats基本上用於..而且它不符合你在上面指定的內容? – 2010-04-23 11:55:52
一個可能的解決方案是增加$範圍的數據保護:
class MyClass {
protected $data;
public function __get($name) {
return $this->data[$name];
}
public function __set($name, $value) {
$this->data[$name] = $value;
}
}
這種方式,因爲他們認爲合適和蒐集運行時定義的屬性擴展類可以訪問陣列。
您能否提供更多具體細節,以瞭解哪些功能無法正常工作?您如何嘗試實現? – Savageman 2010-04-23 11:30:57
我正在閱讀一本書,說明了這一點,並將其標記爲Magic Method中的一個限制...這就是我所知道的所有... – 2010-04-23 11:33:19