2014-02-23 28 views
0

我有一堂課如何使用數組作爲__set __get隱藏變量?

class Session { 
    public $storage; 
    private function __construct($storage) { 
     $this->storage = $storage ? $storage : new stdClass(); 
    } 
    function __get($name) { 
     return $this->storage->$name; 
    } 
    function __set($name, $value) { 
     $this->storage->$name = $value; 
    } 
    function __isset($name) { 
     return isset($this->storage->$name); 
    } 
} 

而且我希望有數組作爲重點:

$id = uniqid('res_'); 
    if (!isset($session->mysql)) { 
     $session->mysql = array(); 
    } 
    $session->mysql[$id] = array(
     'host' => $host, 
     'user' => $username, 
     'pass' => $password, 
     'name' => $db); 

,但得到的錯誤:Indirect modification of overloaded property Session::$mysql has no effect 我已經嘗試使用referece將其存儲在變量:

$mysql = &$session->mysql[$id] 

但同樣的錯誤,如果我不使用&我沒有錯誤,但數據不保存。

我該如何做到這一點?我想讓樹像訪問存儲變量。

回答

0

發現了它,我需要使用

function &__get($name) { 
} 

和它的工作。