yoomoney/yookassa-sdk-validator

This is a developer tool for validating with YooMoney.

1.0.1 2023-06-23 08:14 UTC

This package is auto-updated.

Last update: 2024-04-19 09:35:37 UTC


README

Latest Stable Version Total Downloads Monthly Downloads License

Библиотека для валидирования значений, присваиваемых полям объекта, через чтение атрибутов этих полей. Предназначена для использования в составе YooKassa API PHP Client Library

Требования

PHP 8.0 (и выше)

Установка

В консоли с помощью Composer

  1. Установите менеджер пакетов Composer.
  2. В консоли выполните команду:
    composer require yoomoney/yookassa-sdk-validator
    

В файле composer.json своего проекта

  1. Добавьте строку "yoomoney/yookassa-sdk-validator": "^1.0" в список зависимостей вашего проекта в файле composer.json:
    ...
     "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');

Example

<?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());
}