0
我認爲它是一個相當簡單的問題,但不知道。PHP __set變量雖然__get傳遞參考
我有一個類:
<?PHP
class PropertyTest {
private $data = array();
public function __set($name, $value) {
$this->data[$name] = $value;
}
public function __get($name) {
if (array_key_exists($name, $this->data)) {
return $this->data[$name];
}
$trace = debug_backtrace();
trigger_error(
'Undefined property via __get(): ' . $name .
' in ' . $trace[0]['file'] .
' on line ' . $trace[0]['line'],
E_USER_NOTICE);
return null;
}
public function __isset($name) {
echo "Is '$name' set?\n";
return isset($this->data[$name]);
}
public function __unset($name) {
echo "Unsetting '$name'\n";
unset($this->data[$name]);
}
public function getHidden() {
return $this->hidden;
}
}
?>
不知道爲什麼,但「代碼」塊是惱人的地獄,反正。
只是基本的魔法得到確定。但是,當我改變__get
按引用傳遞我不能再這樣做:
$object->$variableName = $variableValue;
我不知道爲什麼,雖然我假設,因爲它會檢查其是否存在,但由於它具有參考返回的東西會失敗如果它不存在,就這樣做。 set函數不會被稱爲可能,即使我返回一個假值,它永遠不會調用set函數,因爲它'已經存在/有一個值'。
我能理解這個嗎?如果是這樣,是否有解決方法?如果不是如何工作,是否有解決方法?
你能告訴我們具體哪一部分,你想改變傳遞參考?在設置參數爲這樣的** PHP致命錯誤時,我遇到了一個致命錯誤:Method PropertyTest :: __ get()不能通過引用接受參數** – quickshiftin 2012-02-24 10:29:40
public function&__ get($ name){ – John 2012-02-24 10:31:06