如何使用数组作为__set __get隐藏变量?

时间:2014-02-23 18:48:05

标签: php magic-methods

我有课堂课程

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]

但是同样的错误,如果我不使用&我没有错误,但数据没有保存。

我怎样才能使这个工作?我希望树可以访问存储变量。

1 个答案:

答案 0 :(得分:0)

找到它,我需要使用

function &__get($name) {
}

它有效。