yoomoney/yookassa-sdk-validator

这是一个用于与YooMoney进行验证的开发工具。

1.0.1 2023-06-23 08:14 UTC

This package is auto-updated.

Last update: 2024-09-19 10:36:10 UTC


README

Latest Stable Version Total Downloads Monthly Downloads License

一个用于通过读取字段属性来验证对象字段值的库。适用于YooKassa API PHP客户端库

要求

PHP 8.0(及以上版本)

安装

使用Composer在控制台安装

  1. 安装Composer包管理器.
  2. 在控制台运行以下命令
    composer require yoomoney/yookassa-sdk-validator
    

在您的项目中的composer.json文件中

  1. 将以下行添加到您的项目依赖项列表中:"yoomoney/yookassa-sdk-validator": "^1.0"
    ...
     "require": {
         "php": ">=8.0",
         "yoomoney/yookassa-sdk-validator": "^1.0"
    ...
    
  2. 更新项目依赖。在控制台切换到composer.json所在的目录,并运行以下命令
    composer install
    
  3. 在您的项目代码中引入验证器文件的自动加载
    require __DIR__ . '/vendor/autoload.php';
    

入门指南

  1. 导入所需的验证器类
    use YooKassa\Validator\Validator;
    use YooKassa\Validator\Constraints as Assert;
    
  2. 通过属性添加所需的验证规则
    #[Assert\NotBlank]
    #[Assert\Length(min: 2)]
    private string $title;
    
  3. 创建验证器实例,将需要验证的字段类实例传递给构造函数
    $validator = new Validator($this);
    
  4. 调用validatePropertyValue()函数,传入要验证的字段名和值
    $validator->validatePropertyValue('title', $title);
    
  5. 如果值不符合通过属性设置的规则,验证器将抛出异常。

要跳过某个规则或为字段类定义的规则列表的检查,请将包含规则类名称的数组作为参数传递给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());
}