Пример #1
0
 protected static function loadDefault(Iface $stockpile, $name, $dsn)
 {
     $db = Connection::instance($dsn);
     if (!$db instanceof \Gaia\DB\ExtendedIface) {
         $db = new \Gaia\DB($db);
     }
     if ($db->isa('mysql')) {
         $classname = 'Gaia\\Stockpile\\Storage\\MySQL\\' . $name;
     } elseif ($db->isa('sqlite')) {
         $classname = 'Gaia\\Stockpile\\Storage\\SQLite\\' . $name;
     } else {
         throw new Exception('invalid db driver', $db);
     }
     $table = $stockpile->app() . '_stockpile_' . constant($classname . '::TABLE');
     $object = new $classname($db, $table, $stockpile->user());
     if (!\Gaia\Stockpile\Storage::isAutoSchemaEnabled()) {
         return $object;
     }
     $cache = new Store\Gate(new Store\Apc());
     $key = 'stockpile/storage/__create/' . md5($dsn . '/' . Connection::version() . '/' . $table . '/' . $classname);
     if ($cache->get($key)) {
         return $object;
     }
     if (!$cache->add($key, 1, 60)) {
         return $object;
     }
     $object->create();
     return $object;
 }
Пример #2
0
 public function storage($name)
 {
     return Storage::get($this, $name);
 }