示例#1
0
 public static function factory(array $params = array(), $raw = FALSE)
 {
     $params = array_merge(static::$defaults, $params);
     if (!array_key_exists($params['scheme'], static::$available)) {
         throw new \Exception("Scheme not available for '{$params['scheme']}'");
     }
     $pdo = $params['fragment'] == 'pdo' or array_key_exists('pdo', $params);
     $base_klass = static::$available[$params['scheme']];
     $driver_klass = $pdo ? '\\Grocery\\Database\\Wrapper\\PDO' : str_replace('@', 'Wrapper', $base_klass);
     $scheme_klass = str_replace('@', 'Scheme', $base_klass);
     $debugger = new \Grocery\Database\Debug(\Grocery\Config::get('logger'));
     $wrapper = $driver_klass::factory($params, $debugger);
     if ($raw) {
         return $wrapper;
     }
     $obj = new $scheme_klass($wrapper, $params);
     // TODO: enable configuration for this?
     method_exists($obj, 'set_encoding') && $obj->set_encoding();
     return $obj;
 }
示例#2
0
 public function unserialize($data)
 {
     extract(unserialize($data));
     $this->setup = $params;
     $this->conn = \Grocery\Base::factory($params, TRUE);
     $type = \Grocery\Config::get('unserialize');
     if ($type === 'reset') {
         $this->reset();
     }
     foreach ($tables as $one => $set) {
         if ($type === 'overwrite') {
             $this->drop($one);
         }
         if (!isset($this->{$one})) {
             $this->create($one, $set['columns']);
             foreach ($set['indexes'] as $key => $val) {
                 $this->add_index($one, $key, $val['column'], $val['unique']);
             }
         }
     }
 }