PHP中的静态初始值设定项还是静态构造函数?

PHP中的静态初始值设定项还是静态构造函数?,php,static,Php,Static,我一直在寻找PHP中是否存在类似于静态初始值设定项的东西 以下是一个静态方法作为Java示例: public class Foo { static { //This is what I mean (Does this exist in other languages like PHP? //THIS IN PHP } } 我找到了它的名字(静态初始值设定项)。它是第一次加载类时使用的。PHP中似乎没有静态初始值设定项。PHP中的静态属性和方法 class Som

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

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

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

我找到了它的名字(静态初始值设定项)。它是第一次加载类时使用的。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();

我认为PHP没有像Java或C#那样提供任何直接的初始化类的方法。如果要初始化静态类成员,可以在构造函数中进行初始化,如下所示:

class MyClass {

    private static $staticValue;

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

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

是的,PHP中有静态方法,不,那不是PHP-那是java。不,php中没有静态“块”。方法可以是静态的,类属性(又称类变量)可以是静态的,但不能是代码块。类不能包含裸代码。这些不是静态方法,而是静态变量…@MarcB你应该把你的评论作为答案,因为这就是问题所在是的,没错。最后,我决定使用
公共静态函数init(){Class::Foo=new Foo();}
我就是这样做的,唯一需要调用init()的问题是:非常感谢。这不是一个
静态块
(初始值设定项),它只是一个作为
静态
的方法。