我有一个包含多个公共函数的类,它们都与相同的$_SESSION
索引/变量进行交互。而不是每次调用它们时将该变量传递给每个函数,我想简单地将它传递给类构造函数,并让函数从$this->
中获取它。
我想要做的例子:
$_SESSION['test'] = array('foo', 'bar');
class MyClass {
// Pass by reference in ___construct arguments
public function __construct(&$test_var) {
$this->test_var = $test_var;
}
public function unset_foo() {
unset($this->test_var[0]);
}
}
$bar = new MyClass($_SESSION['test']);
$bar->unset_foo();
print_r($_SESSION['test']);
结果应该是:
Array
(
[1] => 'bar'
)
但这不起作用。
有办法做到这一点吗?
答案 0 :(得分:3)
你总是要经过ref:
在此行中,您不是通过引用分配,而是复制值:
$this->test_var = $test_var;
只需在其中添加&
,以便$this->test_var
仍然可以引用$_SESSION['test']
:
$this->test_var = &$test_var;