我有一个抽象类,由许多其他类继承.我想拥有它,而不是每次都重新实例化(__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)
这样做 - 有点,我能够获取属性并重新分配它们,但在此之内,我还想调用其他一些类,但只有一次.
有什么建议可以更好地实现这一目标吗?
这是一个单身人士构造:
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
| 归档时间: |
|
| 查看次数: |
2348 次 |
| 最近记录: |