prinsfrank / php-validated-properties
使用属性规则在PHP8.1及更高版本中验证属性
v0.0.2
2022-02-14 18:45 UTC
Requires
- php: ^8.1
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.2
- phpstan/phpstan: ^1.4
- phpunit/phpunit: ^9.5
- prinsfrank/php-validated-properties-phpstan: ^0.0.3
README
PHP Validated Properties
将规则属性添加到模型属性中,以确保其有效性。
为什么使用这个包?
当验证来自请求、导入或API的外部数据时,常见的PHP包允许您以非结构化的方式验证传入的数据,并返回这些数据。使用此包,您可以直接将验证规则添加到结构化模型中;
#[Url] protected string $url; #[Between(1, 100)] protected int $nrOfItems; #[Email] protected string $email;
当一个属性被设置为不符合这些规则的值时,将抛出ValidationException异常。(可以被应用程序具体处理)
设置
要启动,只需运行;
composer require prinsfrank/php-validated-properties
创建验证模型
并扩展PrinsFrank\PhpStrictModels\Model
中的基础模型;
<?php use PrinsFrank\PhpStrictModels\Model; class ValidatedModel extends Model { }
如果您的模型已经扩展了另一个基础模型,您也可以使用WithValidatedProperties特质
<?php use PrinsFrank\PhpStrictModels\WithValidatedProperties; use Illuminate\Database\Eloquent\Model; class ValidatedModel extends Model { use WithValidatedProperties; }
添加验证属性
要添加验证规则到属性,将它们作为属性添加到受保护和私有属性中
<?php use PrinsFrank\PhpStrictModels\Model; use PrinsFrank\PhpStrictModels\Rule\Between; use PrinsFrank\PhpStrictModels\Rule\Url; class ValidatedModel extends Model { #[Between(1,5)] protected int $nrOfItems; #[Url] protected string $url; }
由于PHP内部工作方式,无法验证公共属性,因此扩展验证模型或使用WithValidatedProperties特质的模型在包含具有规则属性的公共属性时将抛出异常。
PHPStan支持
为了让PHPStan理解此包,并使其能够通过静态分析防止任何可检测到的错误,提供了一个PHPStan插件,位于prinsfrank/php-validated-properties-phpstan
。要将其添加到phpstan.neon,只需运行以下命令;
composer require prinsfrank/php-validated-properties-phpstan --dev
并将以下行添加到您的phpstan.neon文件中的includes部分
includes: - vendor/prinsfrank/php-validated-properties/development/PHPStan/extension.neon