Author: Manuel Andreo Garcia (andreo.garcia@googlemail.com)
Esempio n. 1
0
 /**
  * Executes DSL methods
  *
  * @throws QueryBuilderException
  *
  * @param  string $name
  * @param  array  $arguments
  * @return mixed
  */
 public function __call($name, array $arguments)
 {
     // defined check
     if (false === method_exists($this->_dsl, $name)) {
         throw new QueryBuilderException('undefined ' . $this->_dsl->getType() . ' "' . $name . '"');
     }
     // version support check
     if (false === $this->_version->supports($name, $this->_dsl->getType())) {
         $reflection = new \ReflectionClass($this->_version);
         throw new QueryBuilderException($this->_dsl->getType() . ' "' . $name . '" in ' . $reflection->getShortName() . ' not supported');
     }
     return call_user_func_array(array($this->_dsl, $name), $arguments);
 }
Esempio n. 2
0
 private function assertVersions(Version $version, array $dsl)
 {
     foreach ($version->getQueries() as $query) {
         $this->assertTrue(method_exists($dsl[0], $query), 'query "' . $query . '" in ' . get_class($version) . ' must be defined in ' . get_class($dsl[0]));
     }
     foreach ($version->getFilters() as $filter) {
         $this->assertTrue(method_exists($dsl[1], $filter), 'filter "' . $filter . '" in ' . get_class($version) . ' must be defined in ' . get_class($dsl[1]));
     }
     foreach ($version->getAggregations() as $aggregation) {
         $this->assertTrue(method_exists($dsl[2], $aggregation), 'aggregation "' . $aggregation . '" in ' . get_class($version) . ' must be defined in ' . get_class($dsl[2]));
     }
     foreach ($version->getSuggesters() as $suggester) {
         $this->assertTrue(method_exists($dsl[3], $suggester), 'suggester "' . $suggester . '" in ' . get_class($version) . ' must be defined in ' . get_class($dsl[3]));
     }
 }