PHP静态成员不保值

2024-03-07

大家好,我正在编写的 WordPress 插件遇到了一个奇怪的问题,但这与 WordPress 本身无关,更多地与 PHP 有关,所以请继续阅读,以便我可以解释。 WordPress 插件已连接,以便调用 init() 函数...这有效,我可以确认它被调用一次。

class MyClass
{
   static $i=0;

   public static function init()
   {
     self::$i++;
   }

   public static function dosomething()
   {
     echo 'i is = ' . self::$i;
   }
}

当第一次从 Wordpress 中调用 inf dosomething() 时,这是可以的。然后我有另一个 ajax-response.php 文件,其中包含上面的类,并再次调用 dosomething,它打印 i 值 = 1。

问题是通过 ajax-response.php 脚本调用时的 i 值又回到了 0?

就好像它在完全不同的内存空间中执行并创建一个新程序,这样静态成员变量仅在同一进程之间共享,而不是在多个 Web 线程之间共享。

有任何想法吗?

提前致谢,

Chris


就好像它在完全不同的内存空间中执行并创建一个新程序,这样静态成员变量仅在同一进程之间共享,而不是在多个 Web 线程之间共享。

确切地! :) 100% 就是这样工作的。每个 PHP 请求都是一个新请求,有自己的内存。这static关键字并不是为了解决这个问题而设计的。

如果你想在 Web 应用程序中跨多个进程/请求持久保存内容,你需要使用sessions http://php.net/manual/en/features.sessions.php.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP静态成员不保值 的相关文章

随机推荐