问答详情
源自:14-4 从配置中生成数据库连接

在主从的时候是如何实现单例数据库对象的

怎么防止只用了某一个服务器对象

提问者:我的太阳啊 2015-12-22 17:57

个回答

  • myAbo
    2015-12-25 11:02:59

        static function getDatabase($id = 'proxy')
        {
            if ($id == 'proxy')
            {
                if (!self::$proxy)
                {
                    self::$proxy = new \IMooc\Database\Proxy;
                }
                return self::$proxy;
            }
     
            $key = 'database_'.$id;
            if ($id == 'slave')
            {
                $slaves = Application::getInstance()->config['database']['slave'];
                $db_conf = $slaves[array_rand($slaves)];
            }
            else
            {//这里单例出来的只是配置信息
                $db_conf = Application::getInstance()->config['database'][$id];
            }
            $db = Register::get($key);
            if (!$db) {
                $db = new Database\MySQLi();
               //根据配置信息实例$db,并储存到注册器数组中
                $db->connect($db_conf['host'], $db_conf['user'], $db_conf['password'], $db_conf['dbname']);
                Register::set($key, $db);
            }
            return $db;
        }

    第二个问题问什么?