静态变量重置 - PHP

Kor*_*rts 0 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;
...
}
Run Code Online (Sandbox Code Playgroud)

首次调用该函数时,将调用此函数:

self :: $ _ pwdAdjId = Yii :: app() - > user-> getId();

并保存值$adj,它工作正常.

当用户更改页面时,存储的$adj值为0 - static变量的初始值.我不确定为什么它重置为其初始值而不是存储的新值.

第一次通话前:

self::$_pwdAdjId == 0

第一次电话:

self::$_pwdAdjId == 7

$adj == 7

页面(ajax调用):第二次调用:

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

我错过了什么吗?第二次通过ajax调用它会影响它的性能static吗?

谢谢.

Jon*_*Jon 9

当用户更改页面时,它是一个完全不同的HTTP请求,您的程序将从头开始运行.static不会做你认为它做的事情.您可以使用会话变量实现所需的结果.

由于看起来您正在使用Yii框架,您可能希望在PHP会话中使用自己的包装器而不是自己滚动(顺便说一下,它还有用于获取HTTP请求参数的包装器).