我想創建我自己的一種輕量級的OOP方式來跟蹤加載的文件及其相應版本(尚未實現)在我的PHP框架中,以便能夠輕鬆測試將來的依賴性問題。創建單身 - 這真的是對的嗎?
這裏是我當前的代碼,但作爲一個總的初來乍到OOP和模式,我不能確定我是否已經完成了正確的單身與否:
class loadRegistry {
private static $registry = null;
private function __construct(){
if (is_null(self::$registry));
self::$registry = array();
}
public static function get() {
return self::$registry;
}
public static function set($filename){
if (isSet(self::$registry[$filename]) AND !empty($filename)) {
throw new Exception("File already loaded");
}
else self::$registry[$filename] = '';
}
}
loadRegistry::set('filename');
loadRegistry::set('filename2');
$reg = loadRegistry::get();
這不是一個單身人士。我不確定它試圖成爲什麼......它幾乎看起來像一個抽象工廠,但我看不到對象在哪裏處理。更何況你可以只做'private static $ registry = array()`並保存is_null檢查...並且你沒有辦法實例化它,所以沒有任何註冊表...... – ircmaxell 2011-02-14 22:23:56
你可能想要讀取[靜態方法vs單例:不選擇](http://www.phparch.com/2010/03/static-methods-vs-singletons-choose-neither/)。 – 2011-02-14 22:26:28
*(相關)* [爲什麼單身人士在PHP中沒有用處](http://gooh.posterous.com/singletons-in-php)是我對[誰需要單身人士]的答案的更長版本(http:// stackoverflow.com/questions/4595964/who-needs-singletons/4596323#4596323) – Gordon 2011-02-14 22:38:10