yoomoney / yookassa-sdk-validator
这是一个用于与YooMoney进行验证的开发工具。
1.0.1
2023-06-23 08:14 UTC
Requires
- php: >=8.0.0
- ext-mbstring: *
Requires (Dev)
- ext-xml: *
- phpunit/phpunit: ^9.6
This package is auto-updated.
Last update: 2024-09-19 10:36:10 UTC
README
一个用于通过读取字段属性来验证对象字段值的库。适用于YooKassa API PHP客户端库。
要求
PHP 8.0(及以上版本)
安装
使用Composer在控制台安装
- 安装Composer包管理器.
- 在控制台运行以下命令
composer require yoomoney/yookassa-sdk-validator
在您的项目中的composer.json文件中
- 将以下行添加到您的项目依赖项列表中:
"yoomoney/yookassa-sdk-validator": "^1.0"
... "require": { "php": ">=8.0", "yoomoney/yookassa-sdk-validator": "^1.0" ...
- 更新项目依赖。在控制台切换到composer.json所在的目录,并运行以下命令
composer install
- 在您的项目代码中引入验证器文件的自动加载
require __DIR__ . '/vendor/autoload.php';
入门指南
- 导入所需的验证器类
use YooKassa\Validator\Validator; use YooKassa\Validator\Constraints as Assert;
- 通过属性添加所需的验证规则
#[Assert\NotBlank] #[Assert\Length(min: 2)] private string $title;
- 创建验证器实例,将需要验证的字段类实例传递给构造函数
$validator = new Validator($this);
- 调用validatePropertyValue()函数,传入要验证的字段名和值
$validator->validatePropertyValue('title', $title);
- 如果值不符合通过属性设置的规则,验证器将抛出异常。
要跳过某个规则或为字段类定义的规则列表的检查,请将包含规则类名称的数组作为参数传递给validatePropertyValue()函数
$validator->validatePropertyValue('title', $title, [Assert\Length::class]);
要获取特定字段的规则列表,请调用getRulesByPropName()函数,并将字段名作为参数传递
$constraintsList = $validator->getRulesByPropName('title');
示例
<?php
require_once './vendor/autoload.php';
use YooKassa\Validator\Constraints as Assert;
use YooKassa\Validator\Validator;
class PaymentItemModel
{
#[Assert\Length(min: 5)]
private ?string $title;
private Validator $validator;
public function __construct()
{
$this->validator = new Validator($this);
}
public function setTitle(?string $title): PaymentItemModel
{
$this->validator->validatePropertyValue('title', $title);
$this->title = $title;
return $this;
}
}
$paymentItem = new PaymentItemModel();
try {
// Валидатор не выбросит исключение
$paymentItem->setTitle('title');
echo 'success!';
} catch (Exception $exception) {
var_dump($exception->getMessage());
}
try {
// Валидатор выбросит исключение
$paymentItem->setTitle('titl');
} catch (Exception $exception) {
echo 'fail!';
var_dump($exception->getMessage());
}