我有一个使用注册表类的web应用程序。注册表类包含我需要整理应用程序的重要类。在PHP中为重要的类创建一个很好的注册表类
我已经使注册表类成为Singleton类,并且此类是静态的。
注册表类的内容是在这里:
<?php
class registry
{
private static $objects = array();
private static $instance;
private function __construct(){}
private function __clone(){}
public static function singleton()
{
if(!isset(self::$instance))
{
self::$instance = new registry();
}
return self::$instance;
}
public function storeObjects()
{
$Objects = array_merge($GLOBALS['EXTRA_LIBS'],array('data','page','session','uri','loader','modules'));
foreach($Objects as $name)
{
$this->$name = $name;
}
}
public function __set($object, $key)
{
require_once(__LIBRARIES . DS . $object . '.class.php');
self::$objects[ $key ] = new $object(self::$instance);
}
public function __get($key)
{
if(is_object (self::$objects[ $key ]))
{
return self::$objects[ $key ];
}
}
public function returnAllObjects()
{
return self::$objects;
}
}
?>
现在,每当我想在这里使用的类在我的应用我做的一个:
registry::singleton()->data->adddata('somedata');
我用的是类很多在我的申请中,每种方法至少有一次。现在
我的问题是什么是做的最好的事情:
1)调用整个事情每次
2)班$registry = registry::singleton();
一次在每一个方法,然后只用局部变量。 (我不知道这是否会起作用)
还是有更好的方法来解决这个问题。
+1依赖注入 – 2010-09-13 07:05:19