J'essaie d'utiliser la méthode singleton pour accéder à un objet global (dans cet exemple, son "nom d'utilisateur"). Ma question est comment puis-je modifier cela afin que dans la fonction DB->connect()
je pourrais faire echo $this->username;
sans en déclarant $ nom d'utilisateur ou en changeant les 2 dernières lignes?Utilisation de la méthode singleton pour créer un objet global
class CI_Base {
private static $instance;
public function CI_Base()
{
self::$instance =& $this;
}
public static function &get_instance()
{
return self::$instance;
}
}
function &get_instance() {
return CI_Base::get_instance();
}
class Foo {
function run() {
$CI = & get_instance();
$CI->username = "test";
$db = new DB;
$db->connect();
}
}
class DB extends Foo {
function connect() {
$CI = & get_instance();
echo $CI->username;
}
}
$foo = new Foo;
$foo->run();
Singleton est un [motif] (http://en.wikipedia.org/wiki/Design_pattern_%28computer_science%29), pas une méthode. [Et vous devriez l'éviter] (http://stackoverflow.com/questions/1996230/how-bad-are-singletons). – Gordon