【发布时间】:2013-10-21 14:13:15
【问题描述】:
在 PHP 中,我有以下代码(精简,以便于阅读):
class Var {
public $arr;
function __construct($arr) {
$this->arr = $arr;
}
function set($k, $v) {
$this->arr[$k] = $v;
}
}
class Session extends Var {
function __construct() {}
function init() {
session_start();
parent::__construct($_SESSION);
}
}
$s = new Session();
$s->init();
$s->set('foo', 'bar');
var_dump($_SESSION);
此时,我希望 $_SESSION 包含 'foo' => 'bar'。但是,$_SESSION 变量是完全空的。为什么会这样?如何将 $_SESSION 变量存储为属性,以便以后通过引用对其进行修改?
我尝试将__construct($arr) 替换为__construct(&$arr),但没有成功。
【问题讨论】:
-
“但这不起作用。” --- 它确实有效。但这还不足以按您的预期工作。
-
是不是因为您没有将您的
$arr声明为array()?所以在你的classVar构造函数中,$this->arr = $array();
标签: php session reference pass-by-reference