PHP中的静态初始值设定项还是静态构造函数?
我一直在寻找PHP中是否存在类似于静态初始值设定项的东西 以下是一个静态方法作为Java示例: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
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()的问题是:非常感谢。这不是一个静态块
(初始值设定项),它只是一个作为静态
的方法。