Юра
Я к тому что к примеру, у тебя в дто стоит не нулабл поле, в реквесте нуль прилетает
Юра
Че дальше?
Юра
Или в дто всё нулабл?
Konstantin
Юра
Или ты руками риквест мапиш в ДТО и проверяешь на нул?
Юра
И че
Юра
Вместо ошибки валидации 500 ошибка потому что конструктор не пропустил?
Konstantin
так есть же валидатор
Konstantin
условный #[NotBlank] на поле
Юра
Валидатор работает с готовым дто
Юра
Как ты сделаешь готовый дто?
Юра
Как смапить нул в не нулабл поле?
Юра
Ну а как его надо собирать?
Vlad
ну если говорим про реквест с джосна с помощью серализера
Юра
Просто с этими тайпд пропертчми валидатор к херам сломан теперь
Vlad
а серализер уже собирет все ошибки
Vlad
https://symfony.com/doc/current/components/serializer.html#collecting-type-errors-while-denormalizing
Юра
Т.е. валидация нула теперь на валидаторе?
Vlad
нет)
Юра
Ой на сериализаторе
Vlad
дыа,так как связано с типизацией
Юра
И это надо его ошибку еще конвертировать в формат ошибок который фронту понятен
Vlad
ну уже все из коробки есть
Юра
Он возвращает constraints violation list?
Vlad
так в примере собирается же
Юра
Вижу да
Юра
Понял
Юра
Я просто дед и вылез из симфы когда там еще все вадидировали энтити
Юра
Во всех доках так было
Юра
Видимо с того времени непонимание что в этом плохого
Юра
И формы мапились напрямую в энтити
Юра
Как-то все работало
Юра
Да и сейчас на сайте симфы примеры кода валидатора с валидацией энтити
Юра
Юра
Это все видимо корни растут от того что каждый понимает под энтити. Для кого-то это просто метаданные для БД. Для других это бизнес объект
Юра
Если рассматривать энтити как метаданные, то согласен, нужна прослойка перед ними
Nikolay
Юра
Ну я бы тогда не брал вообще доктрину
Nikolay
Юра
Потому что это оверкил
Юра
Если вся логика и по сути отношения описаны в ДТО
Юра
Дублирование какое-то
Nikolay
Юра
А где логика?
Nikolay
Юра
Допустим логика что полное имя это фамилия плюс имя
Konstantin
Ну я бы тогда не брал вообще доктрину
в этом есть определенный смысл, ну точнее выкинуть doctrine/orm. dbal вполне себе можно оставить с поправкой на то, что оно когда-нибудь научится в апсерты
Konstantin
но замучаешься процессить ассоциации, это прям реально будет болью
Konstantin
кстати, а ты знаешь, что в доктрине (орме) можно селектить прям в дто?
Konstantin
https://www.doctrine-project.org/projects/doctrine-orm/en/2.11/reference/dql-doctrine-query-language.html#new-operator-syntax
Юра
Я не знаю ибо мне никогда дто не нужен был )
The Ant
Anton
Очень удобная фича, между прочим)
Anton
Регулярно юзаю, когда надо куски данных отдать
Юра
Konstantin
дед троллит!
Anton
А, Сорян. Не выкупил(
Павел
Видимо с того времени непонимание что в этом плохого
Дело не в том, что это прям плохо, дело просто в подходе. Инкапсулирование логики в сущности дает некую защиту. С другой стороны, много сущностей почти без собственной логики и обычные круды. Например брать апи платформу, она вообще десериализует реквест сразу на энтити,без форм. Там же и валидирует, и сериалайз делает, и акссес лаер - все в сущности. И в принципе, это очень удобно и быстро там где почти нет логики. Но где логика - придаст боли и проблем. Некоторые вообще используют паралельно несколько методов, плюс вообще транзакшн скрипт, и это неплохо.
Короче вопрос неоднозначный. Просто хорошо знать плюсы, минусы и варианты.
Юра
Согласен. ДТО маст хев если много мест в коде где нужно создавать энтити в разных условиях
Юра
А если единственное место где она создаётся это метод контроллера то там мне кажется и без дто можно
Юра
А то получается какой-то RTO
Юра
Request transfer object
Юра
Хотя я заметил что в компилируемых языках намного чаще если не почти всегда используется dto, поэтому может это просто хороший способ писать как надо
Павел
Павел
ДТО в принципе удобны для типизации, ну а симфони накладывает еще и плюхи с валидацией. Всегда понятнее что трубуется в метод, если в него прилетает дто, а не массив непонятный. Ну а десериализатор делает жизнь еще проще)
Юра
Вообще это дто можно сказать немного недоделанный паттерн команда
Konstantin
дто - это паттерн "структура", не больше и не меньше. это просто способ добавить типизации ассоциативным массивам
Юра
Если развить идею ДТО то в итоге прийдёшь к команде
Konstantin
не надо усложнять, это вообще не про проектирование, это просто способ упорядочить данные
Павел
Павел
Но не стоит усложнять
Юра
Просто видимо в чем трабла
Юра
Мне кажется что дто это какая-то полумера
Юра
Что-то такое посередине