J'ai une application web où j'utilise une classe de registre. La classe de registre contient des classes importantes dont j'ai besoin dans ma demande.Création d'une bonne classe de registre en PHP pour les classes importantes
J'ai fait de la classe de registre une classe Singleton et cette classe est statique.
Le contenu de la classe de registre est ici:
<?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;
}
}
?>
Maintenant, chaque fois que je veux utiliser l'une des classes ici dans ma demande que je fais:
registry::singleton()->data->adddata('somedata');
J'utilise les classes beaucoup dans ma demande, minimum 1 fois dans chaque méthode.
Maintenant, ma question est quelle est la meilleure chose à faire:
1) appeler la chose à chaque fois que
2) Classe $registry = registry::singleton();
une fois dans chaque méthode, puis il suffit d'utiliser la variable locale. (Je ne sais pas si cela va fonctionner)
Ou y at-il une méthode plus élégante pour résoudre ce problème.
+1 pour l'injection de dépendance –