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

来源:14-4 从配置中生成数据库连接

我的太阳啊

2015-12-22 17:57

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

写回答 关注

1回答

  • 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;
        }

    第二个问题问什么?

大话PHP设计模式

帮助PHPer具备使用设计模式解决工程中复杂逻辑的能力

62160 学习 · 230 问题

查看课程

相似问题