Kirill
а у него строгий регламент входных данных и исключений
Kirill
входные данные могут быть как простыми, так и DTO: $creator->create($login, $pass); // or $creator->create(new CredentialsDTO( login: $login, password: new NonEncryptedPasswordDTO($pass), ));
Вадим
в Апи платформе там както попроще чтоли оно само както сохраняет это всё дело гдето
Kirill
ну так всё вот это для rapid разработки
Kirill
с таким же успехом можно ларку взять)
Kirill
Kirill
Вот пример)
Вадим
дак лучше б ларку, ей-богу оно ни туда ни сюда :)
Kirill
ну в ларке как раз херак херак и готово
Kirill
работает и ладно
Вадим
да а тут всё посложнее, а сроки хотят как будто на ларке
Kirill
Kirill
ну и форма в догонку
Kirill
в моём случае пустая строка недопустима, например
Вадим
это понятно всё
Kirill
Ну раз так, тогда ты понял где у тебя ошибки денормализации вылетать должны, а где ошибки валидации) В моём примере 1) "не пустая строка" - это тип данных и кривая форма. 2) А "кривая регулярка" - ошибка сервиса сохранятора.
Kirill
у тебя же ошибка денормализации - в контроллере вылетает, а логическая (кривой пароль, кривая почта или ещё что) - сервиса, отвечающего за создание/апдейт/что-то ещё
Kirill
P.S. Я не ебу ваще как там в апи платформ)))
Вадим
ну там сохраняторы это стейт процессоры
Вадим
вот только с уровнями валидации ты мне подкинул конечно, у меня так всё хорошо в одном жило
Вадим
утро вечера мудренее
Kirill
ты технически не можешь на одном уровне всё это делать
Kirill
у тебя полюбасу есть какая-то логика сложная, которую в констреинт просто так не запихнуть
Kirill
*скорее всего
Павел
привет! Как валидировать данные перед денормализацией и православно ли это? Дело в том что в процессе денормализации я создаю валью обжекты чтобы сохранить их в БД, и если значение не валидное то мой валью обжект падает.
Если апилплатформа, то не мучаться и делать как там заведено и показано в доке симфы/платформы из коробки и не задаваться архитектурными вопросами, так как это уже всё не архитектурно (rad разработка). Пихаете контрейнты в сущности и не паритесь. Если используете дто - то в дто.
Павел
Имхо перебор с кол-вом слоев, ну да ладно) А кто дтошку потом в респонс превращает? Какой то единый ViewEventListener с сериализатором? Или на каждую response дто еще респонсер ?
Вадим
Если апилплатформа, то не мучаться и делать как там заведено и показано в доке симфы/платформы из коробки и не задаваться архитектурными вопросами, так как это уже всё не архитектурно (rad разработка). Пихаете контрейнты в сущности и не паритесь. Если используете дто - то в дто.
Так так, уже лучше :) А не подскажете ли, как мне с VO поступить. Они создаются при десериализации, а валидация случается после десериализации. А там в VO поля типизированные, надо бы отвалидировать перед этим.
Павел
Имхо перебор с кол-вом слоев, ну да ладно) А кто дтошку потом в респонс превращает? Какой то единый ViewEventListener с сериализатором? Или на каждую response дто еще респонсер ?
хотя мб и имеет смысл если хочется заморочиться и потом преобразовывать в разные форматы на лету в зависимости от accept content type 🙄
Павел
Так так, уже лучше :) А не подскажете ли, как мне с VO поступить. Они создаются при десериализации, а валидация случается после десериализации. А там в VO поля типизированные, надо бы отвалидировать перед этим.
С этим есть проблема даже без апи платформы, так как сначало идет десериализация, а оптом валидация и падает по типизации. Т.е. это не вопрос во, а вопрос любой валидации. Поидее сериализатор должен падать с нормальным сообщением, либо какой то флаг передать. Хотя если конструктор в во есть, то возможно могут быть проблемы
Вадим
Как же решить такую проблему без ддд и гексагонов
Вадим
Можно в один слой, бог с ним
Павел
https://symfonycasts.com/screencast/api-platform/validation
Павел
Лучше посмотрите весь каст
Павел
Думаю встретите много интересного для решения проблем с апи платформой
Вадим
Вадим
Не помогло
Павел
Ну и подобные штуки гуглить https://github.com/api-platform/core/issues/4250
Павел
https://api-platform.com/docs/core/validation/ раздел Collecting Denormalization Errors
Вадим
https://api-platform.com/docs/core/validation/ раздел Collecting Denormalization Errors
спасибо, не знал, не дочитывал до конца это, включил, падает так же
Вадим
там да, на конструкторе VО
Вадим
хз как этот флаг работать должен
Вадим
наверное как-то должен
The Ant
Зачем называть Аддер, апдейтер, делетор, етц...? Почему не назвать просто PatternAdd $handler? Где-то видел статейку про то что ваши окончания-or, -er говно! Или в книжке... Уже не помню.
The Ant
А вот обратное, а почему нет?
Хз, пиндосу видимо неприятно такое читать )
The Ant
Объективных причин нету
Павел
Хз, пиндосу видимо неприятно такое читать )
Ну т.е. ты спрашиваешь у Кирилла, почему он написал так, как не нравится какому то пиндосу?)
The Ant
Не, я спросил потому что какой-то именитый буржуйский инфоциган призвал не писать так.
Павел
Не, я спросил потому что какой-то именитый буржуйский инфоциган призвал не писать так.
Хз я особо не слышал. Сервис он и есть сервис. По названию в целом понятно, даже не используя этот стиль у себя.
Павел
Опять же сколько людей столько и мнений. Кому нравится так, кому то иначе. Если же нет какого конкретного профита, то субъективщина
Павел
Пик1 почему это плохо, Пик 2 альтернативы так себе 😄
Да, когда ты пишешь тупо UserHandler без обозначающей папки или еще чего, то это нихера не понятно. Но у Кирилла как раз пик два, adder. Т.е. понятно для чего
The Ant
Ну с юзерхандлером согласен, че он там хандлит вопрос вопросов. Чет не предложила мой вариант просто написать UserAdd, как команду. Видимо такое не практикуют вообще )
The Ant
сука, опять бегать переименовывать всё насвете... да когда уже это кончится?! 🤣🤣🤣
Павел
Ну с юзерхандлером согласен, че он там хандлит вопрос вопросов. Чет не предложила мой вариант просто написать UserAdd, как команду. Видимо такое не практикуют вообще )
Да, есть такое что суффиксы тип правктика не очень, тип и интерфейсы не писать и ивенты. Но имхо, с суфиксами банально проще искать по проекту
Павел
Тип UserAddCommand а есть какой нить UserAddedEvent
Павел
А если без суффиксов, то будет UserAdd и UserAdded, имхо визуально более путанее смотрится без суффиксов и искать по вхождению фразы будет чуть сложнее
The Ant
С ивентами да
The Ant
сук еще думать над названиями...
Павел
сук еще думать над названиями...
Делать так, как удобно в команде. Если ты один - ну тут уже как тебе кажется профитнее
Павел
Сильно субъектиная штука, думаю не стоит замарачиваться как правильно или нет. На скорость проекта не влияет))
The Ant
да хотелось бы какойнить стандарт именования хз, который не противоречит ни чему, ну или как можно меньше
The Ant
Есть общие рекомендации. Вон ор, ер плоха, но можно если точно отражает суть. Глаголы плоха, но если команда(конкретное действие) то чеб и нет? Всякие обшие суффиксы типа Sevice тоже плохо.
The Ant
которые не особо зависят от языка
Павел
Если можешь, то лучше во что то переименовать или декомпозировать.
The Ant
ну вот для юзкейса как выбирать? я хз даже сейчас. писал просто UserAdd не рефлексируя ) но это говно, UserSignup тоже с глаголом. UserRegistration? Ну хз... а если это не юзер а статья? Её не зарегистрируешь :D
The Ant
получается все тот же адд\аддер, всратый
Павел
UserAddHandler UserAdd/Handler
Павел
Не парься, если нет каких то проблем и нравится - забей)
Павел
Но мне глагол не очень, но опять же не критикал, ко всему привыкаешь
The Ant
я перфекционист ебучий, и эта тема щас будет неделю голову греть 😰 и все равно ничего не изменится...
The Ant
скинули вырезку из чистого кода:
а что с Data не так? сук... как по мне это лучше чем дто, хотябы отражает то, что объект с данными