确认PHP静态变量不会跨请求持久化

确认PHP静态变量不会跨请求持久化,php,Php,我希望确保在PHP请求之间不存储静态变量。前面的问题如下: 明确地说,它们不是,但它们更多地是在提供一种维持状态的方式的背景下,而不是具体讨论什么是预期行为 例如,如果我有如下PHP代码: function myfunc() { static $a=0; print $a++; } for ($i=0;$i<10;$i++) myfunc(); 函数myfunc() { 静态$a=0; 打印$a++; } 对于($i=0;$i而言,PHP的特殊性在于每个请求都会重

我希望确保在PHP请求之间不存储静态变量。前面的问题如下:

明确地说,它们不是,但它们更多地是在提供一种维持状态的方式的背景下,而不是具体讨论什么是预期行为

例如,如果我有如下PHP代码:

function myfunc()
{
    static $a=0;
    print $a++;
}

for ($i=0;$i<10;$i++) myfunc();
函数myfunc()
{
静态$a=0;
打印$a++;
}

对于($i=0;$i而言,PHP的特殊性在于每个请求都会重新加载整个PHP代码


确认“每个请求都会重新加载整个php代码”的事实是,您可以找到类似于数据库访问的持久化方法,以避免为每个请求建立到数据库的新连接(请参阅:)

是的,你是对的,静态变量或PHP中除$\u会话之外的任何变量只能通过一个请求生存

class MyClass
{
   public static $a = 0;
   public static init()
   {
      self::$a = isset($_SESSION['a']) ? $_SESSION['a'] : 0;
   }
   public static printA()
   {
      self::increaseA();
      print(self::$a);
   }
   public static increaseA()
   {
     self::$a++;
     $_SESSION['a'] = self::$a;
   }
}
myClass::init();
for ($i=0;$i<10;$i++) myClass::printA();
class-MyClass
{
公共静态$a=0;
公共静态init()
{
self::$a=isset($\u SESSION['a'])?$\u SESSION['a']:0;
}
公共静态printA()
{
self::increaseA();
打印(self:$a);
}
公共静态增量a()
{
self::$a++;
$\u SESSION['a']=self::$a;
}
}
myClass::init();

对于($i=0;$iPHP不会在请求之间保留应用程序状态。在PHP应用程序生命周期中,应用程序会随每个请求一起新执行。静态变量用于在执行离开作用域时保留局部函数作用域中的变量值。文档中没有提到静态变量变量用于在请求之间保留值。

在最旧的PHP版本中,使用了“注册全局变量”功能…但这是不赞成的,正确的决定是使用会话。@Felipecardosmartins,
register\u globals
与此无关,也从来没有任何关系。嗨,Senad,如果在脚本结束时会话没有被破坏,会话变量会在多个AJAX请求中对同一个PHP脚本保持不变吗?是的,会话仍然有效如何访问服务器。AJAX只是访问服务器而无需重新加载的不同方式。