2011-09-17 121 views
0

出於某種原因,我的static變量重置,我不知道爲什麼它重置。靜態變量重置 - PHP

public static $_pwdAdjId = 0; //static variable 

function ...() { 
// Piece of code that manipulates the static variable 
if(isset($_POST['adj'])) { 
    self::$_pwdAdjId = $_POST['adj']; 
} else if(!isset($_POST['adj']) && $_GET['ajax'] !== 'assignTable') { 
    self::$_pwdAdjId = Yii::app()->user->getId(); 
} 
$adj = self::$_pwdAdjId; 
... 
} 

當函數首先被調用,這將被稱爲:

自:: $ _ pwdAdjId = Yii的::應用程序() - >用戶>的getId();

並將值保存到$adj,它工作正常。

當用戶更改頁面時,存儲在$adj中的值爲0 - static變量的初始值。我不確定它爲什麼重置爲初始值而不是存儲新值。

First Call調查之前:

self::$_pwdAdjId == 0

First Call調查:

self::$_pwdAdjId == 7

$adj == 7

頁(AJAX調用):第二個電話:

self::$_pwdAdjId == 0 // supposed to be 7

我錯過了什麼嗎?第二次通過ajax調用它的事實是否影響其static的性質?

謝謝。

+0

您是否希望靜態變量在提供請求後保留其值?還是我誤解了您的問題? – cenanozen

回答

9

當用戶改變頁面時,這是一個完全不同的HTTP請求,你的程序再次從頭開始運行。 static不符合你的想法。您可以使用session variables實現您想要的結果。

因爲它看起來像你正在使用Yii框架,您可能需要使用its own wrapper在PHP會話,而不是滾動您自己的(順便說一下,它也有wrappers用於獲取HTTP request parameters)。