静态变量重置 - PHP

时间:2011-09-17 22:44:41

标签: php variables static

出于某种原因,我的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 -

感谢。

1 个答案:

答案 0 :(得分:9)

当用户更改页面时,它是一个完全不同的HTTP请求,您的程序将从头开始运行。 static不符合您的想法。您可以使用session variables来获得所需的结果。

由于看起来您正在使用Yii框架,因此您可能希望在PHP会话中使用its own wrapper而不是自己滚动(顺便说一句,它还有wrappers来获取HTTP request parameters })。