cloud-castle/validator

Быстрый валидатор данных для PHP 8.1+: 20+ правил, точечная нотация и wildcard для вложенных полей, пользовательские правила и сообщения. Нулевые внешние зависимости.

Maintainers

Package info

gitverse.ru/cloud-castle/validator

Homepage

Issues

Documentation

pkg:composer/cloud-castle/validator

Transparency log

Statistics

Installs: 2

Dependents: 0

Suggesters: 0

v1.1.2 2026-07-23 19:30 UTC

This package is auto-updated.

Last update: 2026-07-30 06:10:17 UTC


README

🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano

CloudCastle Validator

CloudCastle Validator

Packagist Version Downloads PHP Version License

Быстрый валидатор данных для PHP 8.1+: 20+ правил, точечная нотация и * для вложенных и массивных полей, пользовательские правила и сообщения. Граница безопасности для недоверенного ввода. Нулевые внешние зависимости.

Установка

composer require cloud-castle/validator

Требуется PHP 8.1+.

Быстрый старт

<?php

use CloudCastle\Validator\Validator;

$validator = Validator::make($request, [
    'name' => 'required|string|min:2|max:50',
    'email' => 'required|email',
    'age' => 'nullable|integer|between:0,150',
    'role' => 'required|in:user,manager',
    'items.*.price' => 'required|numeric|min:0',   // валидация массива по wildcard
]);

if ($validator->fails()) {
    foreach ($validator->errors() as $field => $messages) {
        // $field => ['сообщение об ошибке', ...]
    }
}

// Проверенные данные — только поля из правил (защита от лишних ключей).
$clean = $validator->validated();

// Пользовательское правило и сообщение.
Validator::extend('even', fn (mixed $v): bool => is_int($v) && $v % 2 === 0, 'Поле :attribute должно быть чётным.');

Возможности

  • 20+ встроенных правил: required, nullable, string, integer, numeric, boolean, array, min, max, between, size, email, url, ip, in, not_in, regex, alpha, alpha_num, digits, same, different.
  • Точечная нотация для вложенных полей (user.email) и *wildcard `** для элементов массива (items.*.price`).
  • Пользовательские правила: замыкания (extend) и классы RuleInterface.
  • Переопределение сообщений по ключу «поле.правило».
  • validated() возвращает только описанные правилами поля — лишние ключи (is_admin и т. п.) не проходят дальше.
  • Иммутабельный результат, карта ошибок «поле → список сообщений».

Сравнение с аналогами

Все таблицы ниже сгенерированы автоматически из честных сравнительных тестов (benchmarks/compare.php) на ОДИНАКОВОЙ операции для всех аналогов, PHP 8.1.34, без Xdebug.

1. Функциональность

Возможность🏆 CloudCastlerakitilluminatevalitronrespectmanual¹
20+ встроенных правил из коробки
Точечная нотация + wildcard для вложенных полей
Пользовательские правила и сообщения
Готов из коробки без транслятора/фабрики
Нулевые внешние зависимости
Всего🏆 5🏆 53432

2. Безопасность и корректность

Свойство🏆 CloudCastlerakitilluminatevalitronrespectmanual¹
Сбор ВСЕХ ошибок (не бросает исключение на первой)
Строгая проверка типов без «магического» приведения
Только объявленные поля в validated() (защита от mass-assignment)
Готов из коробки без внешней конфигурации
Нулевые внешние зависимости (меньше поверхность атаки)
Всего🏆 5🏆 53323

3. Производительность

Валидация массива из 3 полей, 50 000 раз (минимум из 4).

РешениеВремя (мс)Итог
manual¹60базовый уровень (не библиотека)
🏆 CloudCastle393быстрейшее среди библиотек
rakit1 086,8аналог
respect1 277,8аналог
valitron1 712,4аналог
illuminate3 846,3аналог

4. Потребление памяти

Пик памяти на 50 000 валидаций (изолированный процесс, только целевая библиотека).

РешениеПиковая память (KB)Итог
🏆 CloudCastle7 065легчайшее среди библиотек
valitron7 065аналог
respect7 065аналог
manual¹7 065базовый уровень (не библиотека)
illuminate8 945аналог
rakit10 087аналог

¹ Базовый уровень (нативные вызовы/примитивы без полноты решения) показан для контекста и не претендует на победу среди библиотек-аналогов.

rakit/validation — сильный аналог: по набору возможностей и безопасности он на одном уровне с cloud-castle, но в ~2,8× медленнее и заметно тяжелее по памяти. illuminate/validation требует транслятор и фабрику и в разы медленнее. Ручная валидация (baseline) быстрее, но без правил, сообщений и вложенности. Память измеряется в изоляции.

Вывод: CloudCastle Validator — самый быстрый среди полнофункциональных валидаторов (в 2,8× быстрее rakit, в 10× быстрее illuminate) и самый лёгкий по памяти, с точечной нотацией, wildcard, пользовательскими правилами и сообщениями при нулевых внешних зависимостях.

Разработка

composer install
composer check    # линтеры + статический анализ + тесты
composer fix      # автоисправления (Rector, PHP CS Fixer, PHPCBF)
composer ci       # полный CI-пайплайн локально

Полный список команд с описаниями: composer run-script --list.

Документация

Лицензия

MIT © CloudCastle (alex-4-17@yandex.ru)

🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano