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