appendRulePrefix($rulePrefix); } else { self::getFactory()->prependRulePrefix($rulePrefix); } } /** * @param string $ruleName * @param array $arguments * * @return Validator */ public static function __callStatic($ruleName, $arguments) { if ('allOf' === $ruleName) { return static::buildRule($ruleName, $arguments); } $validator = new static(); return $validator->__call($ruleName, $arguments); } /** * @param mixed $ruleSpec * @param array $arguments * * @return Validatable */ public static function buildRule($ruleSpec, $arguments = array()) { try { return static::getFactory()->rule($ruleSpec, $arguments); } catch (\Exception $exception) { throw new ComponentException($exception->getMessage(), $exception->getCode(), $exception); } } /** * @param string $method * @param array $arguments * * @return self */ public function __call($method, $arguments) { if ('not' === $method && empty($arguments)) { return new static(new Rules\Not($this)); } return $this->addRule(static::buildRule($method, $arguments)); } /** * @param mixed $input * @param array $extraParams * * @return AllOfException */ public function reportError($input, array $extraParams = array()) { $exception = new AllOfException(); $input = AllOfException::stringify($input); $name = $this->getName() ?: "\"$input\""; $params = array_merge( $extraParams, get_object_vars($this), get_class_vars(__CLASS__) ); $exception->configure($name, $params); if (!is_null($this->template)) { $exception->setTemplate($this->template); } return $exception; } /** * Create instance validator * * @return Validator */ public static function create() { $ref = new ReflectionClass(__CLASS__); return $ref->newInstanceArgs(func_get_args()); } }