1

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

但这不起作用。

有没有办法做到这一点?

4

1 回答 1

3

你总是必须通过 ref:

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

    $this->test_var = $test_var;

只需在此处添加一个&,这样它$this->test_var仍然可以引用$_SESSION['test']

    $this->test_var = &$test_var;
于 2013-10-10T15:32:44.893 回答