我对 Wordpress 环境中 PHP 静态类变量的理解是,如果在同一个 http 请求中实例化了同一个类的 2 个或多个对象,那么它们的类静态变量将被共享。
什么不同的http请求?类静态变量是否曾在http 请求之间共享?或者是为每个 http 请求创建的对象的全新副本?
不,它们不是共享的。每次请求都会创建全新的对象。请记住,HTTP 是无状态协议。这就是为什么许多人将 Singleton 视为反模式(1) 的原因。
所以,基本上如果你有以下代码:
<?php
class MyClass {
public function __construct() {
// any action
}
public function anyMethod() {
// any code
}
}
$obj = new MyClass;
Run Code Online (Sandbox Code Playgroud)
$obj为每个请求从头开始创建。事实上,这还不是全部。您的整个应用程序是从头“创建”的。