【发布时间】:2011-02-14 22:18:09
【问题描述】:
我正在尝试创建自己的轻量级但 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 检查......而且你无法实例化它,所以无论如何都没有注册表...... -
(related) Why Singletons have no use in PHP 是我对Who needs Singletons的回答的较长版本
-
@Gordon:非常感谢您的提醒!
-
不客气。 @middaparka 提供的链接也不错。
标签: php oop design-patterns singleton