Store::instance PHP Method

instance() public static method

获取实例
public static instance ( string $config_name )
$config_name string
    public static function instance($config_name)
    {
        // memcache 驱动
        if (\Config\Store::$driver == \Config\Store::DRIVER_MC) {
            if (!isset(\Config\Store::${$config_name})) {
                throw new \Exception("\\Config\\Store::{$config_name} not set\n");
            }
            if (!isset(self::$instance[$config_name])) {
                if (extension_loaded('Memcached')) {
                    self::$instance[$config_name] = new \Memcached();
                } elseif (extension_loaded('Memcache')) {
                    self::$instance[$config_name] = new \Memcache();
                } else {
                    sleep(2);
                    exit("extension memcached is not installed\n");
                }
                foreach (\Config\Store::${$config_name} as $address) {
                    list($ip, $port) = explode(':', $address);
                    self::$instance[$config_name]->addServer($ip, $port);
                }
            }
            return self::$instance[$config_name];
        } elseif (\Config\Store::$driver == \Config\Store::DRIVER_REDIS) {
            if (!isset(\Config\Store::${$config_name})) {
                echo "\\Config\\Store::{$config_name} not set\n";
                throw new \Exception("\\Config\\Store::{$config_name} not set\n");
            }
            if (!isset(self::$instance[$config_name])) {
                self::$instance[$config_name] = new Redisd();
                // 只选择第一个ip作为服务端
                $address = current(\Config\Store::${$config_name});
                list($ip, $port) = explode(':', $address);
                $timeout = 1;
                self::$instance[$config_name]->connect($ip, $port, $timeout);
                self::$instance[$config_name]->setOption(\Redis::OPT_SERIALIZER, \Redis::SERIALIZER_PHP);
            }
            return self::$instance[$config_name];
        } else {
            if (!isset(self::$instance[$config_name])) {
                self::$instance[$config_name] = new FileStore($config_name);
            }
            return self::$instance[$config_name];
        }
    }

Usage Example

Example #1
0
 public static function getInstance()
 {
     if (!isset(self::$instance)) {
         self::$instance = new Store();
     }
     return self::$instance;
 }
All Usage Examples Of Store::instance