编程语言
首页 > 编程语言> > PHP重载按引用返回,更新数组中的值

PHP重载按引用返回,更新数组中的值

作者:互联网

我有一个用于会话处理的类,它为__GET和__SET使用对象重载,我一直在遇到数组问题,并读取以引用方式分配get,例如& __ GET

问题是我无法更新值.例如,假设我有这个:

$session->item['one']['name']

我想通过分配一个新值来更改它; $session-> item [‘one’] [‘name’] =’新值’但是,它不变.

任何想法如何解决这个问题?下面是代码,谢谢!

class Session 
{

    private $_session = array();

    public function __construct()
    {

        if(!isset($_SESSION)) {
            session_start();
        }
        $this->_session = $_SESSION;
    }

    public function __isset($name)
    {
        return isset($this->_session[$name]);
    }

    public function __unset($name)
    {
        unset($_SESSION[$name]);
        unset($this->_session[$name]);
    } 

    public function &__get($name)
    {

        return $this->_session[$name];

    }

    public function __set($name, $val)
    {     
         $_SESSION[$name] = $val;
         $this->_session[$name] = $val;
    }

    public function getSession()
    {
        return (isset($this->_session)) ? $this->_session : false;
    }

    public function getSessionId()
    {
        return (isset($_SESSION)) ? session_id() : false;
    }


    public function destroy()
    {
        $_SESSION = array();
        session_destroy();
        session_write_close();
        unset($this->_session);
    }

}

解决方法:

在您的构造函数中,更改$this-> _session = $_SESSION;到$this-> _session =& $_ SESSION;因此您可以在课堂上获得对它的引用.

标签:overloading,php
来源: https://codeday.me/bug/20191202/2084650.html