为了账号安全,请及时绑定邮箱和手机立即绑定
注册模式不理解,怎么就获取到了db1了?

正在回答

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 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信