Example #1
0
 /**
  * @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);
 }
Example #2
0
 /**
  * @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()])));
 }
Example #3
0
 /**
  * @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;
 }