我正在研究一个简单的抽象数据库类。在我使用这个类时,我希望有一些实例是一个单例。我正在考虑拥有一个不是单例的抽象类,然后将其扩展为另一个单例的抽象类。这可能吗?受到推崇的?
编辑:我想要两个几乎相同的抽象,除了一个是单例。所以唯一的区别是一个将拥有另一个的所有功能,但将具有其他属性和方法,使其表现得像一个单例。
我想为此拥有一个基类代码库,以便在进行更改时,不必保持两个文件同步。
最佳答案
在我做事的方式中,我相信抽象单例是没有用的。这是因为,
1) 您想要成为单例的是您实例化以在应用程序中使用的最终类,无论它是库、模型、 Controller 还是 View ,而不是抽象类。
2)添加单例方法很简单,8行即可。见下文。
protected static $_instance;
public static function getInstance()
{
if (!isset(self::$_instance)) {
self::$_instance = new self();
}
self::$_instance;
}
3) PHP 5.3 以下版本不支持后期静态绑定(bind)。这将导致实例化抽象类而不是继承它的最终类,并且不会按预期运行,正如 Gordon 和 nuqqsa 已经提到的那样。所以,为了向后兼容,最好避免它。
关于php - 抽象类在 php 中扩展抽象类?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2789328/