我有一個使用註冊表類的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