0
我想使用单例方法来访问一个全局对象(在这个例子中它的“用户名”)。我的问题是如何修改这个,以便在DB->connect()
函数中我可以做echo $this->username;
而不是声明$ username或更改最后2行?使用单例方法来创建一个全局对象
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是[pattern](http://en.wikipedia.org/wiki/Design_pattern_%28computer_science%29),而不是一种方法。 [你应该避免它](http://stackoverflow.com/questions/1996230/how-bad-are-singletons)。 – Gordon 2010-10-05 14:17:11