/** * @param $name * @param $options * @return ExportQuery * @throws \Exception */ public static function create($name, $options) { $class = __NAMESPACE__ . "\\" . ucfirst($name) . 'Query'; if (is_array($options)) { if (!isset($options['class'])) { $options['options'] = $options; $options['class'] = $class; } } else { $options = ['options' => $options, 'class' => $class]; } return parent::create($name, $options); }
/** * @throws \Exception */ public function testCreate() { $dummy = new DummyDatabase(); $this->assertTrue(MonipdbQuery::is_a(Query::create('monipdb', __DIR__ . '/17monipdb.dat'))); $this->assertTrue(QqwryQuery::is_a(Query::create('qqwry', __DIR__ . '/qqwry.dat'))); $this->assertTrue(FullQuery::is_a(Query::create('full', $dummy))); $this->assertTrue(MiniQuery::is_a(Query::create('mini', $dummy))); $this->assertTrue(ChinaQuery::is_a(Query::create('china', $dummy))); $this->assertTrue(WorldQuery::is_a(Query::create('world', $dummy))); $this->assertTrue(FreeipipQuery::is_a(Query::create('freeipip', null))); $this->assertTrue(SinaQuery::is_a(Query::create('sina', null))); $this->assertTrue(TaobaoQuery::is_a(Query::create('taobao', null))); $this->assertTrue(BaidumapQuery::is_a(Query::create('baidumap', null))); $this->assertTrue(DummyQuery::is_a(Query::create('qqwry', ['class' => DummyQuery::className()]))); }
/** * @param string $name * @param mixed $options * @param array $providers * @return Query|null * @throws \Exception */ public function createQuery($name, $options, array $providers = []) { $query = $this->getQuery($name); if ($query == null) { $query = Query::create($name, $options); $query->setProviders(array_map(function ($provider) { return $this->getQuery($provider); }, $providers)); $this->objects[$name] = $query; } return $query; }