Php 实例作为静态类属性
在PHP中是否可以将类的实例声明为属性 基本上,我想要实现的是:Php 实例作为静态类属性,php,static,Php,Static,在PHP中是否可以将类的实例声明为属性 基本上,我想要实现的是: abstract class ClassA() { static $property = new ClassB(); } 好吧,我知道我做不到,但除了总是做这样的事情,还有什么解决办法吗: if (!isset(ClassA::$property)) ClassA::$property = new ClassB(); 您可以使用类似于单例的实现: <?php class ClassA { private
abstract class ClassA()
{
static $property = new ClassB();
}
好吧,我知道我做不到,但除了总是做这样的事情,还有什么解决办法吗:
if (!isset(ClassA::$property)) ClassA::$property = new ClassB();
您可以使用类似于单例的实现:
<?php
class ClassA {
private static $instance;
public static function getInstance() {
if (!isset(self::$instance)) {
self::$instance = new ClassB();
}
return self::$instance;
}
}
?>
另一种解决方案是静态构造函数,它与
<?php
abstract class ClassA {
static $property;
public static function init() {
self::$property = new ClassB();
}
} ClassA::init();
?>
请注意,类不必是抽象的,这样才能工作
另请参见和。在Ctor中设置实例。是的,我知道我可以在构造函数中设置它,但在我的例子中,我需要一个静态的类。不过,感谢您的努力:)?@Paulius您还可以在ctor中设置静态属性,因此我看不出使用“但是”的原因。我不希望将其称为getInstance,而是将其称为getB()。
<?php
abstract class ClassA {
static $property;
public static function init() {
self::$property = new ClassB();
}
} ClassA::init();
?>