Юра
Пишешь врапер над доктрин моделью, называешь её сервис или модель и все дело в шляпе
Egor
А уж сколько народу использует всякий ES и CQRS, которой исключает анемичную модель по определению
Anonymous
Юра
Тут просто путаница из-за того что многие путают модель DDD и модель доктрины
Anonymous
Офкорс
Юра
Ну она не очень предназначена для ддд модели
Maxim Kainov
Юра
К сожалению симфа не предоставляет нам слой модели отсюда все холивары
Юра
Наверное потому что ц каждого своё понимание бизнес модели и саои требования
Egor
https://ocramius.github.io/doctrine-best-practices вот то что быстро удалось найти
Anonymous
Юра
Что всё
Anonymous
Модель доктрины - репрезентация доменной модели
Anonymous
Согласно самим авторам доктрины
Юра
Где там написано это?
Anonymous
Ну полистай слайды лел
Anonymous
Юра
Да энтити отображает бизнес модель
Юра
Но ничего про бизнес логику не сказано
Egor
https://www.doctrine-project.org/projects/doctrine-orm/en/latest/tutorials/getting-started.html#adding-behavior-to-entities
We recommend using a rich entity design and rely on more complex mutators, and if needed based on DTOs. In this design, you should not use getters nor setters, and instead, implement methods that represent the behavior of your domain.
Юра
А есть такое для текущей версии?
Юра
Третья не вышла еще
Egor
Так ничего принципиального не поменяется, просто обрежется половина функционала, в том числе генерация анемичной модели
Anonymous
Жёстко
Юра
Да такое себе
Юра
Еще много спорных моментов
Юра
Типо энтити не должны содержать невалидный стейт, используйье дто
Юра
Решается элементарно
Юра
Добавляем поле в модель isValidated, валидатор его устанавливает в тру, пре флаш листенер проверяет если не тру гудбай
Юра
Делали так
Юра
Намного проще чем только ради этого городить дто
Anonymous
Говнокодом пахнет :/
Юра
Почему?
Anonymous
Мне б за такое по рукам дали
Anonymous
Хотя! С другой стороны! Дто же тоже самое сделает, только дто флашить нельзя ежже
Egor
И везде перед вызовом каждого геттера вызывать isValidated и кидать исключение, а то мало ли что
Юра
Не перед сохранением достаточно
Юра
Гараноирует что энтити валидная
Egor
Ты можешь использовать ентити до сохранения
Юра
Слушай я и в дто могу энтити использовать
Anonymous
Юра
Достал энтити заменил ей поле вручную
Юра
Ааааа
Юра
Паника
Anonymous
Anonymous
Я без предъяв, просто звучит страшно
Юра
Мой подход гарантирует что энтити не созранится неаалидно
Юра
А твой?
Maxim Kainov
Anonymous
Maxim Kainov
Там же пишут, что симфони и зенд формы это типа плохо. А какие есть альтернативы им?
Anonymous
Maxim Kainov
Юра
При условии что достал энтити и посенял поле
Юра
Не успользуя дто
Юра
Джун так решил
Юра
И ещк расскажи.мнк
Юра
Если все через дто и там валидация
Egor
Maxim Kainov
Получил данные в ентити, проверил, если правильно, то сохранил. Как здесь можно случайно сохранить невалидную ентити? Это какая каша в коде должна быть.
Egor
Здесь написано что формы плохи не сами по себе, а для заполнения ентити, через формы следует заполнять дто
Anonymous
Юра
А что валидируется в случае с дто?
Anonymous
Данные внутри дто.
Юра
Хе
Юра
Ну вот кейс
Юра
Мне надо достать энтити и сделать инкремент поля
Юра
Это мне надо сначала сделать дто из энтити, провалидировать дто и потом снова в энтити?
Юра
Это не попахивает говнокодом?
Anonymous
Дто в энтити не может быть
Maxim Kainov
Случайно сохранить невалидную ентити... так можно случайно что угодно сделать, бред какой то
Юра
Расскажи как ты сделаешь инкремент ?
Egor
Maxim Kainov
Юра
Нетушки