什么时候共享静态类变量?

fly*_*ike 4 php oop static

我对 Wordpress 环境中 PHP 静态类变量的理解是,如果在同一个 http 请求中实例化了同一个类的 2 个或多个对象,那么它们的类静态变量将被共享。

什么不同的http请求?类静态变量是否曾http 请求之间共享?或者是为每个 http 请求创建的对象的全新副本?

kav*_*kav 5

不,它们不是共享的。每次请求都会创建全新的对象。请记住,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为每个请求从头开始创建。事实上,这还不是全部。您的整个应用程序是从头“创建”的。


1)为什么单例被认为是一种反模式?