gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 20:50:07 25 4
gpt4 key购买 nike

我有一个用于 session 处理的类,它为 __GET 和 __SET 使用对象重载,我一直在处理数组和读取以通过引用分配获取,例如 &__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);
}

}

最佳答案

在您的构造函数中,将 $this->_session = $_SESSION; 更改为 $this->_session = &$_SESSION; 这样您就可以获得对它在你的类里面。

关于PHP通过引用重载返回,更新数组中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8608025/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com