大家好,我正在编写的 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(使用前将#替换为@)