* @license http://www.apache.org/licenses/LICENSE-2.0 * @link http://phpsx.org */ class Validator implements ValidatorInterface { /** @var \PSX\Schema\Validation\Field[] */ protected $fields; /** * @param \PSX\Schema\Validation\Field[] $fields */ public function __construct(array $fields = null) { $this->fields = $fields; } /** * @param \PSX\Schema\Validation\Field[] $fields */ public function setFields(array $fields) { $this->fields = $fields; } /** * @return \PSX\Schema\Validation\Field[] */ public function getFields() { return $this->fields; } /** * @param string $path * @param mixed $data * @throws \PSX\Schema\Exception\ValidationException */ public function validate($path, $data) { $field = $this->getField($path); if ($field instanceof Field) { $filters = $field->getFilters(); foreach ($filters as $filter) { $result = null; $error = null; if ($filter instanceof FilterInterface) { $result = $filter->apply($data); $error = $filter->getErrorMessage(); } elseif ($filter instanceof \Closure) { $result = $filter($data); } if ($result === false) { if (empty($error)) { $error = '%s is not valid'; } throw new ValidationException(sprintf($error, $path), 'filter', explode('/', ltrim($path, '/'))); } } } } /** * Returns the property defined by the name * * @param string $name * @return \PSX\Schema\Validation\Field|null */ protected function getField($name) { $name = ltrim($name, '/'); foreach ($this->fields as $field) { if (preg_match('#^' . ltrim($field->getName(), '/') . '$#', $name)) { return $field; } } return null; } } __halt_compiler();----SIGNATURE:----LvADVzqO7YMwsHDEBKp5r1bPTYSgi2Jq/yM6EsDsZ47d2Mct19JTdtI15aUsSP6NL3UINEYbGQX6J32yKnYHMrjkxvR8O4iwTAkvLbh/UvueSfpFKXhAEbAIDx1tG5gl3h0WKiOxhvTeommmEC5M/fHAA/UDjmt4Csur2fI6LoUo0wlMG3P1ZICXAz/CLaIkoM54ZC65INrinxGGAM5NTQw04byXAApX8axemQ1mp/feqfZfB+ALBb2Cf0LsnX5W8f9epsCKT3/1EBYa5mYCzhXUl+CHmNWefSbSHqzPvsX8DeOgNZDcF4cQAKtfbhsHuMoLkPM7ovWjVO5jbHKYZ9pCbt7NPomGTdD2cyqmadWfg0jpDgT9coVbwdHJwxwRKnrZRQ3aZp6B6YxP9AFJPGQ7S9fyXPHXSkui++fxs9wVDSz//xph8KxJE5JT/HEfIY7hUsb5UN0lKleP+1Vu6ISXg/KeuzfHbAHDrwU0djicEH02kKvZ856nC39z3dNi0i5MwZwm3PKT1kC2s6nEU9cullFCvdeO63JcM4EsLme+E5UMsVF1gRr6LE7EL70nIQKq37AucAUlx+MWZJYG6tkH4lRQajsTwtm5QmopYeMwezahF90RStbrcqrRjOnpVV5Uov4agt+NyZ21DmwrgfpLaNtL0VFG9DFK7mufMng=----ATTACHMENT:----NDU1Mzk2NzQzNjkwNjIzNCAyMTY0NTA0NzUxODczOTE3IDk0NjI5NjA5MDAxNzAwNjU=