/**
  * Attempts to load Filter from Container or hands off to parent loader.
  *
  * @param Rule $rule
  * @return BaseFilter
  */
 public function getFilterForRule(Rule $rule)
 {
     $filterIdentifier = $rule->getFilter();
     if ($this->container === null || !$this->container->has($filterIdentifier)) {
         return parent::getFilterForRule($rule);
     }
     return $this->container->get($filterIdentifier);
 }
示例#2
0
 /**
  * Finds the filter responsible for executing a specific rule
  *
  * @param Rule $rule
  *
  * @throws \UnexpectedValueException If filter can't be located
  * @return BaseFilter
  */
 public function getFilterForRule(Rule $rule)
 {
     $filterIdentifier = $rule->getFilter();
     if (class_exists($filterIdentifier)) {
         return new $filterIdentifier();
     }
     $error = "Unable to locate filter for: {$filterIdentifier} defined in " . get_class($rule);
     throw new \UnexpectedValueException($error);
 }
示例#3
0
 /**
  * {@inheritDoc}
  *
  * @param CallbackRule $rule
  */
 public function apply(Rule $rule, $value)
 {
     $type = $rule->getInputType();
     if ($type == CallbackRule::SELF_METHOD_TYPE) {
         return $this->useObjectMethod($rule->callback, $value);
     }
     if ($type == CallbackRule::CALLABLE_TYPE) {
         return $this->useCallable($rule->callback, $value);
     }
     if ($type == CallbackRule::CLOSURE_TYPE) {
         return $this->useClosure($rule->callback, $value);
     }
     throw new InvalidCallbackException("Unsupported callback provided, failed to filter property");
 }