PHP 中的静态初始值设定项或静态构造函数


Static initializer or static constructor in PHP?

我一直在研究PHP中是否存在类似于静态初始值设定项的东西。

下面是一个静态方法作为 Java 示例:

public class Foo {
    static {  //This is what I mean (Does this exist in other languages like PHP?
       //THIS IN PHP
    }
}

我找到了它的名字(静态初始值设定项)。它在第一次加载类时使用。似乎 PHP 中没有静态初始值设定项。

我不认为PHP提供了任何直接的方法来初始化类,就像在Java或C#中所做的那样。如果你想初始化静态类成员,你可以在构造函数中完成,如下所示:

class MyClass {
    private static $staticValue;
    public function __construct() {
        if (self::$staticValue === null){
            self::$staticValue = 'Nice';
        }
    }
}

但是,如果您从未实例化您的类,则上述方法将不起作用。这意味着不幸的是,访问静态类成员不会触发__construct的代码,而且我认为 PHP 中没有任何解决此问题的方法。

PHP 中的静态属性和方法

class SomeClass {
    private static $property = 'Foo';
    public static function getProperty() {
        return self::$property;
    }
}
SomeClass::getProperty();

非静态属性和方法

class SomeClass {
    private $property = 'Foo';
    public function getProperty() {
        return $this->property;
    }
}
$class = new SomeClass();
$class->getProperty();