PHP中的静态初始化器或静态构造函数?

时间:2016-01-13 21:08:01

标签: php static

我一直在寻找PHP中是否存在类似静态初始化器的东西。

这是一个静态方法,作为Java示例:

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

我找到了它的名字(静态初始化程序)。它是第一次使用它加载的Class。看起来好像不是PHP中的静态初始化器。

2 个答案:

答案 0 :(得分:2)

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

class MyClass {

    private static $staticValue;

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

但是,如果您从未实例化过您的课程,则上述方法将无效。这意味着不幸的是,访问静态类成员不会触发__construct中的代码,我认为PHP中没有针对此问题的解决方法。

答案 1 :(得分:1)

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();