marjask/object-validator
最新稳定版本:v1.1
Composer 安装命令:
composer require marjask/object-validator
包简介
A simple and flexible validator that verifies the correctness of objects.
README 文档
README
Usage example
Query class:
class UserQuery { protected string $username; protected bool $activated; protected ?DateTime $registerAt; public function setUsername(string $username): self { $this->username = $username; return $this; } public function setActivated(bool $activated): self { $this->activated = $activated; return $this; } public function setRegisterAt(DateTime $registerAt): self { $this->registerAt = $registerAt; return $this; } }
Validator:
use Marjask\ObjectValidator\AbstractValidator; use Marjask\ObjectValidator\Constraints\AlsoRequired; use Marjask\ObjectValidator\Constraints\Length; use Marjask\ObjectValidator\Constraints\Option\OptionAlsoRequired; use Marjask\ObjectValidator\Constraints\Option\OptionLength; use Marjask\ObjectValidator\Constraints\Option\OptionType; use Marjask\ObjectValidator\Constraints\Type; use Marjask\ObjectValidator\Constraints\TypeOrNull; final class UserQueryValidator extends AbstractValidator { public function loadConstraints(): void { $this->addConstraint( 'username', new Type( new OptionType('string') ), new Length( new OptionLength( min: 3, max: 16 ) ) ) ->addConstraint( 'activated', new Type( new OptionType('bool') ), new AlsoRequired( new OptionAlsoRequired(['username']) ) ) ->addConstraint( 'registerAt', new TypeOrNull( new OptionType(DateTime::class) ) ); } }
Usage:
$query = (new UserQuery()) ->setActivated(true) ->setUsername('Mariusz') ->setRegisterAt( new DateTime('2022-08-15') ); // return true/false var_dump(UserQueryValidator::create()->isValid($query)); // return \Marjask\ObjectValidator\ConstraintViolationList var_dump(UserQueryValidator::create()->getViolations($query)); // throw exception \Marjask\ObjectValidator\Exception\InvalidValidationException UserQueryValidator::create()->throwIfInvalid($query);
统计信息
- 总下载量: 30
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 0
- 依赖项目数: 1
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2022-08-16