* @license http://www.apache.org/licenses/LICENSE-2.0 * @link http://phpsx.org */ class Validate { const TYPE_INTEGER = 'integer'; const TYPE_STRING = 'string'; const TYPE_FLOAT = 'float'; const TYPE_BOOLEAN = 'boolean'; const TYPE_ARRAY = 'array'; const TYPE_OBJECT = 'object'; /** * Applies filter on the given value and returns the value on success or * throws an exception if an error occured * * @param string $value * @param string $type * @param \PSX\Validate\FilterInterface[]|callable $filters * @param string $title * @param boolean $required * @return mixed */ public function apply($value, $type = self::TYPE_STRING, array $filters = array(), $title = null, $required = true) { $result = $this->validate($value, $type, $filters, $title, $required); if ($result->hasError()) { throw new ValidationException($result->getFirstError(), $title, $result); } elseif ($result->isSuccessful()) { return $result->getValue(); } return null; } /** * Applies the $filter array containing PSX\Validate\FilterInterface on the * $value. Returns a result object which contains the value and error * messages from the filter. If $required is set to true an error will be * added if the $value is null * * @param string $value * @param string $type * @param \PSX\Validate\FilterInterface[]|callable $filters * @param string $title * @param boolean $required * @return \PSX\Validate\Result */ public function validate( $value, $type = self::TYPE_STRING, array $filters = array(), $title = null, $required = true, ) { $result = new Result(); if ($title === null) { $title = 'Unknown'; } if ($value === null) { if ($required === true) { $result->addError(sprintf('%s is not set', $title)); return $result; } elseif ($required === false) { return $result; } } else { $value = $this->transformType($value, $type); } foreach ($filters as $filter) { $error = null; if ($filter instanceof FilterInterface) { $return = $filter->apply($value); $error = $filter->getErrorMessage(); } elseif (is_callable($filter)) { $return = call_user_func_array($filter, array($value)); } else { throw new InvalidArgumentException('Filter must be either a callable or instanceof PSX\Validate\FilterInterface'); } if ($return === false) { if ($error === null) { $error = '%s is not valid'; } $result->addError(sprintf($error, $title)); return $result; } elseif ($return === true) { // the filter returns true so the validation was successful } else { $value = $return; } } $result->setValue($value); return $result; } protected function transformType($value, $type) { switch ($type) { case self::TYPE_INTEGER: return (int) $value; case self::TYPE_STRING: return (string) $value; case self::TYPE_FLOAT: return (float) $value; case self::TYPE_BOOLEAN: return (bool) $value; case self::TYPE_ARRAY: return (array) $value; case self::TYPE_OBJECT: return (object) $value; default: return $value; } } } __halt_compiler();----SIGNATURE:----ZOIpR2AfmSyTbP6jbZZMfr07qaUnsgdT/sY+XHbqg3KbNr4maKJicu2y/sRUno/pcVxbDjdCI/2iXYWAjw/66TKA1FaNG4BZEXG7Z1DVxRy5zKvvsMy+mXOJ9ig2u6p6EfHG2xeRmvjAtnW3MuoH6H9cIcVpyaSfIuv7o6XqA6u9dtD+E5BEWDD/5HtcYS48nlpCCWuSbNiCR6jNT2LZWMcR32ShGvawW7cqfpqJpFmznA7BP/1UImCA6ocHzWLSOdMcxatHjCHXWXh9t4cW9uXbJz7HUKJEYVX7+0xOz6ijZ9fR/yPDrpssn/e/dI0I0Uv2oPrp5qY64N6qptxn48T/uZYLKPGbL92ZiMaeDH/wDiD5rMsfrRjmYJ+/sZ+/fc+k5ejdIickAW+t0oL/T4l7Le3fuFDxpqmgrjgNRO7WZpPX0s5Z77C475NsMSSbgLn2V48x8VQlCae3Cz7LakNDskTHSPksIte9PTt0mloobIvFB2KnIh6GnCJ7jeIVyoPd/r3jc4PfYG1HCXUHo2ijU7pEKVpfY9CVmLXL9AqqnG56LYFgeIZ5BRRoPkqBcUGunFOQIObfx3+sYzvG3IHjUNGhUMJ3EKD30tQmX4uTJEIBKLbIjmt+puhobPtYB2wFPvvql5H4RSHmj6eAAfxThTvO9WcvnmREd9y8Cqg=----ATTACHMENT:----NzkzMDE3MTM3NTYxNjg2NiA0NDE4ODcwOTM3MzA1MjMgNTI0NzI4ODAzNjY4OTIyOQ==