Запрос проверки требует дублирования кода проверки в Symfony

Скажем, у меня есть метод API REST для создания пользователя. У меня также есть пользовательский объект с настроенными ограничениями проверки. Вопрос в том, как проверить данные из запроса. Мои проблемы:

  1. Я не могу заполнить пользовательский экземпляр без предварительной проверки данных в запросе - некоторые данные могут отсутствовать, другие могут быть недействительными. Например null передается установщику объекта пользователя с string типа намекая.
  2. Я не очень заинтересован в том, чтобы проверять данные запроса отдельно, до заполнения пользовательского экземпляра, потому что это будет дублирование ограничений проверки, настроенных для пользовательского объекта. Было бы проблемой управлять одинаковыми или похожими ограничениями проверки в двух местах - контроллере и конфигурации проверки сущности.

Поэтому я хочу избежать дублирования проверочных ограничений в коде и конфигурации, но в то же время я вынужден дублировать их перед заполнением сущности. Как я могу преодолеть это?

1 ответ

Решение

Это довольно физиологично.

Я хотел бы предложить использовать DTO, где не проверяются никакие ограничения (в основном, когда вы можете принимать "все виды данных" в ваших установщиках или даже иметь общедоступные свойства, которые являются менее громоздкими) и иметь проверку на них.

Когда DTO действителен, создайте базовый объект в допустимом состоянии (Value Object?)

Конечно, вам нужно "продублировать" некоторые ограничения, но я бы не стал рассматривать это как реальное дублирование, потому что на самом деле DTO и базовый объект не являются одним и тем же объектом, даже если они кажутся связанными. Если вы не согласны - и это может иметь место - просто остановитесь и подумайте о том усилении, которое вы получите, отсоединив сущность (которая всегда должна быть в допустимом состоянии) от модели, где берутся данные, вводимые пользователем.

Другие вопросы по тегам