A small PHP library for value parsing and validation inspired by yup.

v0.1.3 2022-08-08 15:22 UTC

This package is auto-updated.

Last update: 2025-06-26 23:41:36 UTC


README

Tests Latest Version Latest Version

PHP библиотека для валидации с интерфейсом, вдохновлённым yup. Позволяет парсить и создавать объекты из сырых массивов в соответствии с наобором правил, указанных в атрибутах на полях класса.

PHP library for value parsing and validation with an interface inspired by yup. Allows you to parse and create objects from raw arrays according to the ruleset specified via attributes applied to the class fields.

Example

use TryAgainLater\Pup\Attributes\{FromAssociativeArray, MakeParsed};
use TryAgainLater\Pup\Attributes\Generic\{ParsedProperty, Required};
use TryAgainLater\Pup\Attributes\Number\Positive;
use TryAgainLater\Pup\Attributes\String\MaxLength;

#[FromAssociativeArray]
class User
{
    #[ParsedProperty]
    #[Required]
    #[MaxLength(8)]
    private string $name;

    #[ParsedProperty]
    #[Positive]
    private int $age;

    use MakeParsed;
}

// Creates the object without any issues:
$user = User::from([
    'name' => 'John',
    'age' => 42,
]);

// Throws an exception because of negative age:
$user = User::from([
    'name' => 'John',
    'age' => -42,
]);

// Throws an exception because the name is too long:
$user = User::from([
    'name' => 'John Doe Blah Blah Blah',
    'age' => 42,
]);

More examples under the examples folder.

Running tests and linter (on the library iteself)

composer test
composer lint