Юра
Типо почему я не стал лидом который в носу ковыряется?
Maxim Kainov
В общем, ты хочешь сделать обертку своеобразную. Это довольно трудоемко, а смысла в этом особого нет.
Юра
Что-то похожее есть у swagger
Юра
https://swagger.io/tools/swagger-codegen/
Maxim Kainov
https://habr.com/ru/post/224879/
Че то нет там никаких аргументов
Вадим
Как это связано )
Я как минимум дал информацию почитать про Anemic Model это будет хорошим стартом понять, что можно код писать по другому
Юра
свагер тоже исповедует подход - укажите метаинформацию в одном месте вы все сгенерим сами
Maxim Kainov
Аргументов чего?
Что логику нужно писать в сущностях
Maxim Kainov
Единственный аргумент типа то ооп, а то процедурный стиль
Юра
И кстатит вод представьте что приходит неопытный джун к вам
Maxim Kainov
Но это не аргумент )
Юра
Наверное меньше ошибок он сделать если модели сгенеряться сами
Юра
Чем будет писать
Юра
Он просто добавил поля, типы проставил настройки нужен ди индекс там и т.д.
Юра
И усё
Вадим
Что логику нужно писать в сущностях
он идет вразрез с базовой идеей Объектно Ориентированного Проектирования, который состоит а том, что бы совмещать данные и процесс (поведение)
Юра
Невозможно энтити совместить с процессом
Юра
Потому что в энтити нет сервис контейнра и энтити это не сервис
Dmitriy
ох) надо взять попкорн)
Юра
Ща кинотеатры закрыты, развлекаемся как можем )
Dmitriy
просто тема стара как мир и всегда холиварная )
Юра
Ну а что тогда может энтити такого без контейнера
Юра
просто мапить данные
Юра
тако у неё предназначение
Юра
тупые геттеры
Юра
тупые сеттеры
Dmitriy
ооооо
Вадим
Ну а что тогда может энтити такого без контейнера
Ты удивишься ) Но управлять своими данными )
Dmitriy
до холивара
Dmitriy
3
Dmitriy
2
Dmitriy
1
Dmitriy
поехали
Юра
))))
Юра
что значит управлять
Вадим
что значит управлять
Значит менять их )
Юра
я не пойму что вы хотите от энтити помимо мапинга в БД
Dmitriy
ну например $user->activated();
Юра
и возможно какого-то метода который на основе данных возвращает что-то еще типо getFullName()
Юра
ну и ОК пусть будет такой метод
Юра
это никак не мешает той моей тулзе
Dmitriy
$order->nextState(new InProgressOrderStatus($payload));
Юра
добавил тип поля EbtityBuilder и дописал такой метод
Вадим
и возможно какого-то метода который на основе данных возвращает что-то еще типо getFullName()
$user = User::register( Credentials::new($dto->email, $dto->password), Profile::new($dto->name, $dto->phone, $dto->birthDate) );
Юра
ну ок если понадобилось в nextState что-то изменить вне энтити
Юра
шо делать
Юра
вы скажите это не задача энтити
Юра
А я скажу ну так какого хрена писать в двух местах )
Юра
чтобв потом веселле другим было собирать по крцпицам где у вас логика спрятана?
Юра
о тут в энтити
Юра
а тут в листенере
Юра
а тут еще есть часть к контроллере
Dmitriy
если вне энтити то это доменное событие имхо
Dmitriy
на которое другие домены или отреагируют\ или нет
Maxim Kainov
Я пробовал писать код в ентитях, потом постоянно его приходилось переносить в сервисы. И я подумал, уж лучше сразу его в сервисы писать )
Юра
Тож самое
Юра
В итоге приходится использовать какой-то сервис
Вадим
$order->nextState(new InProgressOrderStatus($payload));
$order->beginProcess($data); $order->isInProgress() === true ... статусы из вне я б тоже убрал ) хотя зависит от задачи
Юра
И ты понимаешь что теперь у тебя есть сервис в котором логика и энтити в котором логика и выносишь в одно место
Вадим
В итоге приходится использовать какой-то сервис
Я выше тебе показал код регистрации пользователя, и только он есть в методе контроллера ) Больше ничего )
Dmitriy
я предпочел не выносить за сущность проверки ин прогресс тру и т д
Dmitriy
но это тема отдельного разговора)
Юра
ну что-то конечно может быть в энтити
Maxim Kainov
Может, но лучше не надо )
Вадим
я предпочел не выносить за сущность проверки ин прогресс тру и т д
Угу, но если надо, то лучше это в метод запихнуть )
Dmitriy
или сабскрайбер
Вадим
Вангую что есть евент и где то есть листенер)
Внутри конечно есть ивент ) Мыло то юзеру надо отправить )
Dmitriy
ееее
Dmitriy
😂😂😂😂
Юра
хз короче
Юра
Object-relational mapping
Юра
даже в названии написано просто mapping
Юра
а не Object-relational management