2011-09-17 116 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)。