Egor
Так модель же не стоит целиком завязывать на доктрине :/
Модель стоит завязывать на бизнес логику, а доктрина всего лишь сохраняет состояние бизнес модели
Юра
Пишешь врапер над доктрин моделью, называешь её сервис или модель и все дело в шляпе
Egor
А уж сколько народу использует всякий ES и CQRS, которой исключает анемичную модель по определению
Юра
Тут просто путаница из-за того что многие путают модель DDD и модель доктрины
Anonymous
Офкорс
Egor
Тут просто путаница из-за того что многие путают модель DDD и модель доктрины
Так по идее доктрина и так хранит бизнес модель, можно наверное и городить обёртки, но тут как мсье пожелает
Юра
Ну она не очень предназначена для ддд модели
Юра
К сожалению симфа не предоставляет нам слой модели отсюда все холивары
Egor
Где ты такое нашел
В доках доктрины кажется , сейчас не очень удобно, позже поищу
Юра
Наверное потому что ц каждого своё понимание бизнес модели и саои требования
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
Я без предъяв, просто звучит страшно
Юра
Мой подход гарантирует что энтити не созранится неаалидно
Юра
А твой?
Maxim Kainov
Мне б за такое по рукам дали
Не очень такой аргумент )
Anonymous
Мой подход гарантирует что энтити не созранится неаалидно
А при каких условиях она может быть невалидной?
Maxim Kainov
Ну вот и все
Там же пишут, что симфони и зенд формы это типа плохо. А какие есть альтернативы им?
Maxim Kainov
Юра
При условии что достал энтити и посенял поле
Юра
Не успользуя дто
Юра
Джун так решил
Anonymous
Не успользуя дто
А я использую дто. Где теперь твой аргумент
Юра
И ещк расскажи.мнк
Юра
Если все через дто и там валидация
Maxim Kainov
Получил данные в ентити, проверил, если правильно, то сохранил. Как здесь можно случайно сохранить невалидную ентити? Это какая каша в коде должна быть.
Egor
Здесь написано что формы плохи не сами по себе, а для заполнения ентити, через формы следует заполнять дто
Юра
А что валидируется в случае с дто?
Anonymous
Данные внутри дто.
Юра
Хе
Юра
Ну вот кейс
Юра
Мне надо достать энтити и сделать инкремент поля
Юра
Это мне надо сначала сделать дто из энтити, провалидировать дто и потом снова в энтити?
Юра
Это не попахивает говнокодом?
Anonymous
Дто в энтити не может быть
Maxim Kainov
Случайно сохранить невалидную ентити... так можно случайно что угодно сделать, бред какой то
Юра
Расскажи как ты сделаешь инкремент ?
Egor
Случайно сохранить невалидную ентити... так можно случайно что угодно сделать, бред какой то
С такой уверенностью в себе можно вообще не использовать типы и объекты, всё делать на массивах, типа что за бред писать неправильно
Юра
Нетушки