注册模式不理解,怎么就获取到了db1了?
xnceo
2014-11-20
1 回答
class Register
{
protected static $objects;
// 将一个对象注册到一个全局树上
static function set($alias,$object)
{
self::$objects[$alias] = $object;
}
static function get($name)
{
return self::$objects[$name];
}
function _unset($alias)
{
unset(self::$objects[$alias]);
}
}在注册器类中 $Object 是静态属性对吧,因此其生命周期等同全局变量的生命周期,程序结束后才会被销毁。因此在你需要的地方这样调用
$db = DataBase::getInstance(); // DataBse对象
Register::set('db1',$db); // 把对象$db注册到全局树上它的别名为db1如果你是跟着Rango写的使用的时候记得先调用一下工厂方法createDatabase()去获取db对象,因为老师的注册方法写在工厂方法里的
namespace IMooc;
class Factory
{
static function createDatabase()
{
$db = DataBase::getInstance();
Register::set('db1',$db);
return $db;
}
}你在入口文件index.php中,这样来调用:
// 注册树模式 注意一般注册对象会放在项目初始化的位置
$db = IMooc\Factory::createDatabase();
$db1 = \IMooc\Register::get('db1');
var_dump($db1);打印结果就不会是NULL啦
举报
0/150
提交
取消