有没有办法在类构造函数中使用“按引用传递”?

时间:2013-10-10 15:31:42

标签: php pass-by-reference

我有一个包含多个公共函数的类,它们都与相同的$_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'
)

但这不起作用。

有办法做到这一点吗?

1 个答案:

答案 0 :(得分:3)

你总是要经过ref:

在此行中,您不是通过引用分配,而是复制值:

    $this->test_var = $test_var;

只需在其中添加&,以便$this->test_var仍然可以引用$_SESSION['test']

    $this->test_var = &$test_var;