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 に答える