PHP不允许对象多次实例化

Dav*_*vid 0 php class object

我有一个抽象类,由许多其他类继承.我想拥有它,而不是每次都重新实例化(__construct())同一个类,只让它初始化一次,并利用先前继承的类的属性.

我在我的构造中使用它:

function __construct() {
         self::$_instance =& $this;

         if (!empty(self::$_instance)) {
            foreach (self::$_instance as $key => $class) {
                     $this->$key = $class;
            }
         }
}
Run Code Online (Sandbox Code Playgroud)

这样做 - 有点,我能够获取属性并重新分配它们,但在此之内,我还想调用其他一些类,但只有一次.

有什么建议可以更好地实现这一目标吗?

Tim*_*lla 9

这是一个单身人士构造:

class MyClass {
    private static $instance = null;
    private final function __construct() {
        //
    }
    private final function __clone() { }
    public final function __sleep() {
        throw new Exception('Serializing of Singletons is not allowed');
    }
    public static function getInstance() {
        if (self::$instance === null) self::$instance = new self();
        return self::$instance;
    }
}
Run Code Online (Sandbox Code Playgroud)

我制造了构造函数并__clone() private final阻止人们克隆并直接实现它.您可以通过获取Singleton实例MyClass::getInstance()

如果你想要一个抽象的base-singleton类,请看看:https://github.com/WoltLab/WCF/blob/master/wcfsetup/install/files/lib/system/SingletonFactory.class.php