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