Ejemplo n.º 1
0
 /**
  * Registers the filter.
  *
  * @param Finder $finder
  * @param string $name   The filter's name
  * @param string $filter The filter
  *
  * @throws Exception\Filter\ContinueException      When the filter wasn't choosen
  * @throws Exception\Filter\InvaildFilterException When the filter is wrong
  * @throws Exception\Filter\InvaildFilterException When the filter doesn't implement FilterInterface
  */
 private function registerFilter($finder, $name, $filter)
 {
     $filters = $this->getAvailableFilters();
     $choosenFilters = $this->getFilters();
     if (!in_array($name, $choosenFilters)) {
         throw new Exception\Filter\ContinueException(sprintf('Filter "%s" is not choosen', $name));
     }
     if (is_callable($filter)) {
         $filter = call_user_func($filter);
     } elseif (isset($filters[$filter])) {
         $filter = call_user_func($filters[$filter]);
     } elseif (class_exists($filter)) {
         $filter = new $filter();
     } else {
         throw new Exception\Filter\InvalidFilterException(array('a callable which returns a filter class', 'a build-in filter name'));
     }
     if (!$filter instanceof FilterInterface) {
         throw new Exception\Filter\InvalidFilterException('an instance of Inspector\\Filter\\FilterInterface');
     }
     $finder->filter(function (\SplFileInfo $file) use($filter) {
         return $filter->filter($file);
     });
 }