PHP静态成员不保值

标签 php static reset

嗨,我正在编写的 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 线程之间共享。

有什么想法吗?

提前致谢,

克里斯

最佳答案

Its as if it is executing in a totally different memory space and creating a new program, such that static member variables are only shared between same process as opposed to multiple web threads.`

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

如果您想在 Web 应用程序中跨多个进程/请求持久保存内容,则需要使用 sessions .

关于PHP静态成员不保值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7217121/

相关文章:

android - Android Studio在应用程序内部重新加载应用程序

python - Django:内置密码重置 View

Git:从失败的 rebase 中恢复

javascript - 使用一个全局数据库查询填充多个网页输出?

PHP MySQL 从同一结果行中以不同数组的形式获取列

php - Sql只选择第一行

c - 为什么不需要释放静态数组?

java - 请看下面的代码。代码运行良好。输出为[10,11]。 Final A a = new A(); 行的含义是什么?

php - 如何将 php 中的日期转换为 SQL 格式? (并插入)

无法使用我认为应该是编译时常量的内容来初始化静态数组