PHPackages                             beeralex/validator - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Validation &amp; Sanitization](/categories/validation)
4. /
5. beeralex/validator

ActiveLibrary[Validation &amp; Sanitization](/categories/validation)

beeralex/validator
==================

A validation library for arrays with various value types.

07PHP

Since Jul 22Pushed 1y ago1 watchersCompare

[ Source](https://github.com/BkycHblu-6oPwuK/Validator)[ Packagist](https://packagist.org/packages/beeralex/validator)[ RSS](/packages/beeralex-validator/feed)WikiDiscussions main Synced today

READMEChangelogDependenciesVersions (1)Used By (0)

Валидатор
=========

[](#валидатор)

Эта библиотека предоставляет собой простую реализацию валидатора.

Установка:

```
composer require beeralex/validator:dev-main
```

Как использовать
----------------

[](#как-использовать)

Для использования валидатора создайте класс, наследующийся от `\Validator\Validator`, и реализуйте метод `rules`, описывающий правила валидации. Каждое правило разделяется символом '|'.

```
protected function rules() : array
{
    return [
        'name' => 'required|string|min:2|max:30',
        'email' => 'email',
        'age' => 'nullable|integer',
    ];
}
```

Пользовательские сообщения об ошибках
-------------------------------------

[](#пользовательские-сообщения-об-ошибках)

Вы также можете создать пользовательские сообщения об ошибках для каждого правила с помощью метода `messages`:

```
protected function messages(): array
{
    return [
        'name.required' => 'Имя обязательный параметр',
        'name.min' => 'Имя должно быть не короче 2 символов',
        'email.required' => 'Email обязательный параметр',
        'email.email' => 'Email должен быть валидным',
    ];
}
```

Стандартные правила
-------------------

[](#стандартные-правила)

- `array` - Проверяет, является ли значение массивом.
- `boolean` - Проверяет, является ли значение логическим значением.
- `email` - Проверяет, является ли значение валидным email.
- `float` - Проверяет, является ли значение числом с плавающей точкой (целое число вернет false).
- `in` - Ищет значение в массиве. Если значение не массив, то вернет false.
- `integer` - Проверяет, является ли значение целым числом (числовая строка или число с плавающей точкой вернут false).
- `max:{param}` - Проверяет, является ли длина строки больше или равна переданному параметру. Если значение не строка, то вернется false.
- `min:{param}` - Проверяет, является ли длина строки меньше или равна переданному параметру. Если значение не строка, то вернется false.
- `nullable` - Значение может быть необязательным.
- `numeric` - Проверяет, является ли значение числом или числовой строкой.
- `required` - Значение обязательно. При этом если поле и required и nullable, то nullable будет проигнорировано.
- `string` - Проверяет, является ли значение строкой (пустая строка также вернет true).

Пользовательские правила
------------------------

[](#пользовательские-правила)

Пользовательские правила должны наследоваться от класса Validator\\Rules\\Rule, а добавить их можно с помощью метода `userRules` который нужно переопределить в вашем класса валидатора, этот метод должен вернуть объект класса `Validator\RegistryCustomRules`. Используйте метод `addRule` который параметром принимает полное имя класса.

```
protected function userRules() : ?RegistryUserRules
{
    return (new RegistryUserRules)->addRule(TestRule::class);
}
```

Имя класса правила должно заканчиваться на `Rule` (TestRule), таким образом имя правила будет сформировано из названия класса и получиться `test`, слово `Rule` в названии обрезается. Или же переопределите статический метод `getRuleName`, которое должно вернуть имя этого правила.

Имя пользовательского правила должно быть уникальным и не совпадать со стандартными правилами. Теперь имя, возвращаемое методом `getRuleName`, можно использовать при формировании правила в методе `rules`. Если передаете параметр через двоеточие, то самостоятельно реализуйте конструктор в своем классе правила, значение будет передано.

```
namespace Validator\Test;

class TestRule extends \Validator\Rules\Rule
{
    public function validate($value) : bool
    {
        return false;
    }
    public function getMessage(): string
    {
        return 'test сustom rule message';
    }
    public static function getRuleName() : string
    {
        return 'newTestRuleName';
    }
}
```

Пример использования
--------------------

[](#пример-использования)

Для валидации массива создайте экземпляр класса валидатора. Конструктор принимает массив, значения которого будут проверяться.

```
$validator = new UserValidator([
    'name' => 'имя',
    'email' => 'email@email.com',
    'age' => 33,
]);
```

Для валидации используйте метод `validate`, который возвращает логическое значение:

```
$validator->validate();
```

Для получения сообщений об ошибках используйте метод `errors`:

```
$validator->errors();
```

Для получения массива отвалидированных значений используйте метод `validated`:

```
$validator->validated();
```

```
class UserValidator extends \Validator\Validator
{
    protected function rules() : array
    {
        return [
            'name' => 'required|string|min:2|max:30',
            'email' => 'email|newTestRuleName',
            'age' => 'nullable|integer',
        ];
    }

    protected function messages(): array
    {
        return [
            'name.required' => 'Имя обязательный параметр',
            'name.min' => 'Имя должно быть не короче 2 символов',
            'email.required' => 'Email обязательный параметр',
            'email.email' => 'Email должен быть валидным',
            'email.newTestRuleName' => 'Новое сообщение для newTestRuleName'
        ];
    }

    protected function userRules() : ? \Validator\RegistryUserRules
    {
        return (new \Validator\RegistryUserRules)->addRule(TestRule::class);
    }
}
```

###  Health Score

14

—

LowBetter than 1% of packages

Maintenance26

Infrequent updates — may be unmaintained

Popularity4

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity18

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/122775450?v=4)[BkycHblu-6oPwuK](/maintainers/BkycHblu-6oPwuK)[@BkycHblu-6oPwuK](https://github.com/BkycHblu-6oPwuK)

---

Top Contributors

[![BkycHblu-6oPwuK](https://avatars.githubusercontent.com/u/122775450?v=4)](https://github.com/BkycHblu-6oPwuK "BkycHblu-6oPwuK (3 commits)")

### Embed Badge

![Health badge](/badges/beeralex-validator/health.svg)

```
[![Health](https://phpackages.com/badges/beeralex-validator/health.svg)](https://phpackages.com/packages/beeralex-validator)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
