У меня есть класс для обработки сеанса, который использует перегрузку объекта для __GET and __SET
, у меня были проблемы с массивами и чтения для назначения get по ссылке, например &__GET
Проблема в том, что я не могу обновить значения. Например, скажем, у меня есть это:
$session->item['one']['name']
Я бы хотел изменить его, присвоив ему новое значение; $session->item['one']['name'] = 'new value'
Однако, это не меняется.
Есть идеи, как обойти это? Ниже приведен код, спасибо!
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);
}
}