2013-10-10 81 views
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' 
) 

這不工作,雖然。

有沒有辦法做到這一點?

回答

2

你總是由裁判通過:

在這一行,你不是參照分配,但複製的價值:

$this->test_var = $test_var; 

只需添加一個&的出現,讓$this->test_var仍持有參考$_SESSION['test']

$this->test_var = &$test_var; 
+0

完美,這是做到了。謝謝您的幫助。將它設置爲答案,當它讓我。 –

相關問題