我想创建我自己的一种轻量级的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