出于某种原因,我的static
变量重置,我不确定它为什么会重置。
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;
...
}
首次调用该函数时,将调用此函数:
self :: $ _ pwdAdjId = Yii :: app() - > user-> getId();
并将值保存到$adj
,并且工作正常。
当用户更改页面时,存储在$adj
中的值为0 - static
变量的初始值。我不确定为什么重置它的初始值而不是存储的新值。
在第一次通话之前:
self::$_pwdAdjId == 0
第一个电话:
self::$_pwdAdjId == 7
$adj == 7
Page(ajax call):第二个电话:
self::$_pwdAdjId == 0 // supposed to be 7
我错过了什么吗?第二次通过ajax调用的事实是否会影响其static
-
感谢。
答案 0 :(得分:9)
当用户更改页面时,它是一个完全不同的HTTP请求,您的程序将从头开始运行。 static
不符合您的想法。您可以使用session variables来获得所需的结果。
由于看起来您正在使用Yii框架,因此您可能希望在PHP会话中使用its own wrapper而不是自己滚动(顺便说一句,它还有wrappers来获取HTTP request parameters })。