我試圖實現以下目標:摘要Singleton模式類
使用這種一般單例類:
abstract class Singleton {
private static $instance = null;
public static function self()
{
if(self::$instance == null)
{
$c = __CLASS__;
self::$instance = new $c;
}
return self::$instance;
}
}
我很想能夠創建辛格爾頓具體類,如:
class Registry extends Singleton {
private function __construct() {}
...
}
,然後用它們爲:
Registry::self()->myAwesomePonyRelatedMethod();
但遺忘__CLASS__
旨在作爲Singleton
所以發生一個致命的錯誤,關於PHP不能實例化一個抽象類。但事實是,我希望Registry(例如)被實例化。
所以我嘗試get_class($this)
,但是作爲一個靜態類,Singleton沒有$ this。
我能做些什麼才能使它工作?
您運行的是哪個版本的PHP? – 2012-01-21 15:51:21
@Phoenix 5.3.0+ – Shoe
[Singletons is Evil](http://stackoverflow.com/questions/137975/what-is-so-bad-about-singletons) –