TGViewer
Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter @phpproglib · 10.5K subscribers
Post #6055 2.1K
💡 Symfony Validator: не только для форм

Большинство PHP-разработчиков используют Validator в Symfony исключительно для проверки сущностей, связанных с формами. Но этот компонент — гораздо мощнее, чем просто NotBlank и Email.

🔍 В статье автор показывает, как Validator помогает строить устойчивые API и гибкие правила валидации, не завязанные на базу данных.

🧩 1. DTO вместо Entity
Антипаттерн — принимать в контроллере Entity.
Лучше использовать DTO:
🔒 безопасно (нет mass assignment),
🧠 понятно (чёткий контракт API),
🧱 независимо (никакой связи с ORM).



#[Assert\NotBlank]
#[Assert\Email]
public readonly ?string $email;


⚙️ 2. Динамическая валидация с Group Sequences
Хочешь, чтобы обязательные поля менялись в зависимости от условий?
Используй GroupSequenceProvider:
например, если тип аккаунта corporate — проверяй companyName, если individual — игнорируй.

🧬 3. Проверка вложенных структур
С #[Valid] можно валидировать коллекции DTO:


#[Assert\Valid]
public array $items = [];


А с #[Collection] — ассоциативные массивы и JSON-payload’ы.

🧠 4. Свои Constraints с DI
Нужна валидация с доступом к базе или API?
Создай свой ConstraintValidator, инжектни EntityManager или сервис и пиши логику вроде:


if ($repository->findOneBy([$field => $value])) {
$this->context->buildViolation('Already in use')->addViolation();
}


Validator в Symfony — это не просто про формы.
Это способ держать бизнес-инварианты в чистом, расширяемом и декларативном виде.

🧠 Применяйте его для DTO, API, микросервисов и любых сложных структур.
Код станет чище, а валидация — надёжнее.

👉 Читать полностью

Библиотека пхпшника
  • 🔥 12
More from @phpproglib
  1. Sep 25, 2026🌞 PHP умеет искать в массиве без foreach В PHP 8.4 появились array_find(), array_find_key…
  2. Sep 24, 2026👍 5 способов встроить AI в Laravel Laravel AI SDK позволяет добавлять AI-функции прямо в…
  3. Sep 23, 2026🛠 Symfony 8.2 научился автоматически генерировать JSON Schema для конфигурации приложения…
  4. Sep 23, 2026🚀 Свежий релиз Laravel 13 с набором улучшений и исправлений ✅ добавлена поддержка valkey:…
  5. Sep 21, 2026⚡️ PHP 8.6 выйдет 19 ноября 2026 года. Сейчас версия находится в beta. Самые заметные изме…
  6. Sep 20, 2026❓ Какие существуют проблемы в многопоточной среде? Основные проблемы многопоточности: 1️⃣…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →