respect-validation/library/Rules/Zend.php
Henrique Moody c80524b457
Method assert() should not have a return value
One this method should throw an exception when the input is not valid,
returning `TRUE` when it succeeds is not really consistent.
2018-01-28 17:38:40 +01:00

71 lines
1.8 KiB
PHP

<?php
/*
* This file is part of Respect/Validation.
*
* (c) Alexandre Gomes Gaigalas <alexandre@gaigalas.net>
*
* For the full copyright and license information, please view the "LICENSE.md"
* file that was distributed with this source code.
*/
declare(strict_types=1);
namespace Respect\Validation\Rules;
use ReflectionClass;
use Respect\Validation\Exceptions\ComponentException;
class Zend extends AbstractRule
{
protected $messages = [];
protected $zendValidator;
public function __construct($validator, $params = [])
{
if (is_object($validator)) {
return $this->zendValidator = $validator;
}
if (!is_string($validator)) {
throw new ComponentException('Invalid Validator Construct');
}
if (false === mb_stripos($validator, 'Zend')) {
$validator = "Zend\\Validator\\{$validator}";
} else {
$validator = "\\{$validator}";
}
$zendMirror = new ReflectionClass($validator);
if ($zendMirror->hasMethod('__construct')) {
$this->zendValidator = $zendMirror->newInstanceArgs($params);
} else {
$this->zendValidator = $zendMirror->newInstance();
}
}
public function assert($input): void
{
$validator = clone $this->zendValidator;
if ($validator->isValid($input)) {
return;
}
$exceptions = [];
foreach ($validator->getMessages() as $m) {
$exceptions[] = $this->reportError($m, get_object_vars($this));
}
throw $this->reportError($input)->setRelated($exceptions);
}
public function validate($input): bool
{
$validator = clone $this->zendValidator;
return $validator->isValid($input);
}
}