Anonymous
спор ни о чём.
Aleksey
ой все, вы правы )
Anonymous
да-да.
Aleksey
«сервис - это часть доменного слоя, в методологии DDD, который как раз и создан умными дядьками для грамотного проектирования и поддержки больших систем» иногда полезно считать кол-во шагов для решения задачи, а не слепо слушать дядек )
KoJIT
если ты начал думать об архитектуре когда у тебя 100 контроллеров, то ты уже попал :)
Интересно, каким образом 100 контроллеров говорят о плохой архитектуре?
Anonymous
о чём спор-то?
Dmitry
ни о чем :)
Anonymous
сотрясаем воздух? Можно с вами?
Иван
Да смысла нет спорить, спагетти код быстрее написать, если приложение однодневка с функционалом CRUD. Задумываться об архитектуре начинаешь тогда, когда есть печальный опыт разростания таких проектов, с которыми потом ничего уже не сделать из - за их неповоротливости
Иван
вот тогда и слушать дядек начинаешь, что такое DDD, Solid, и т.д.
Dmitry
короче надо создать конференцию с рассмотрение конретного кода, и там обсудить слабые и сильные строны разных подходов, и пути решения проблем :)
Anonymous
ну обычно как, сначала быстренько прототип — стало расти, тихонько рефакторинг с постепенным «усложнением».
Anonymous
а не бросаться в крайность — говнокодить или сразу по феншую убер сложно.
Иван
всем посмотреть советую
Иван
кто не смотрел)
Dmitry
там в конце интересно, про проблеммы ;)
Dmitry
и про то когда оно нафиг не надо
Иван
там в конце интересно, про проблеммы ;)
да, там есть диаграмма прогрессии сложности поддержки проекта с DDD и без него
Aleksey
ну а что по факту какая то херь в миграции изуродованный конороллер зато по DI DDD и как сказали дядьки вместо того чтобы ОДИН раз настроит сервис как копонент и забыть о нем и просто использовать
Aleksey
каждую задачу надо рещать 1 раз
Aleksey
но это по опыту моих больших проектов код которых не вызывает кровотечений, но возможно я не прав )
Aleksey
»а завтра тимлид скажет "переезжаем с yii2 на симфони", и начнешь задачу решать второй раз, куда поместить код из компонента» после этого надо отрубать руки, тк надо заранее думать на чем писать, а не пытаться делать универсальное решение (это тоже типичная ошибка со слов дядек)
Aleksey
есть примеры твоих приложений на github - они все коммерческие, поэтому в открытом доступе нет
Иван
Изолировать бизнес логику полезно, а по другому эта логика будет размазана по всему приложению. Я не хочу переубеждать, и от своей позиции не откажусь. Каждый кодит так, как считат нужным. Я буду дядек слушать на опыте, дабы не оступиться на пути. Не претендую на звание паттерностроителя, чтобы никого не считать нужным слушать
Aleksey
ты путаешь бизнес логику и подключение классов с этой самой бизнес логикой
Иван
нет
Aleksey
вместо того чтобы по максимуму использовать удобство yii2 ты уже заранее готовишься перехать на симфони
Aleksey
а когда переедешь на сифони не будешь использовать ее фишки что потом переехать еще куда нибуть
Dmitry
вместо того чтобы по максимуму использовать удобство yii2 ты уже заранее готовишься перехать на симфони
а в чем разница его подхода, от использования компонента. Или как ты предлагаешь?
Иван
мне не нужен компонент с сервисом обыденным) их десятки, таких сервисов в приложении. Каждый выносить в компонент?
Иван
я использую компоненты
Иван
но выношу в них что - то более глобальное, чем просто сервис на одну - две задачи, содержащий только логику
Anonymous
только отошёл, как у вас тут веселье.
Dmitry
только отошёл, как у вас тут веселье.
у меня вообще работа встала (
Anonymous
почему-то Алексей думает, что у Ивана 1 Севрис.
Dmitry
надо выключать телеграм
Иван
Алексей имеет ввиду компонент фреймворка, а я говорю про класс - сервис, который содержит методы - задачи, который сервис исполняет. Безусловно можно сервис запихнуть в компонент, и получать его через Yii::$app->myService, но "при переезде на симфони" у тебя не будет Yii::$app, а DI будет!
Anonymous
но внезапно! У него их несколько.
Anonymous
и пихать это в компонент? Ну так себе решение.
Anonymous
Тестирование? Не, не слышал.
Anonymous
Как ты свой компонент-то протестируешь потом?
Anonymous
в частности ДИ удобно тем, что ты можешь эти маленькие кусочки потестировать безболезненно.
Иван
у меня вообще работа встала (
у меня тоже...спросил про DI в группе Yii )
Anonymous
но Алексей похоже с этим не сталкивался, поэтому в упор не понимает полезности DI.
Dmitry
у меня тоже...спросил про DI в группе Yii )
самая холиварная группа в моей списке телеграм )))
Anonymous
да пофиг.
Dmitry
верно, без поднятия всего Yii инстанса
а зачем для компонета весь инстанс yii ? там же только нужные зависимости передаются
Иван
а зачем для компонета весь инстанс yii ? там же только нужные зависимости передаются
я имел ввиду, что когда ты будешь писать тест, чтобы протестировать сервис, ты только его создашь, и все. А чтоб получить компонент, тебе нужно дернуть фреймворк
Dmitry
точно так же создаешь
Dmitry
вот из доки Компонентами приложения могут быть любые объекты.
Иван
вообще я ж говорю, в компонент я что - то более глобальное лучше запихну. А у этого чего - нибудь уже могут быть и свои тесты
Dmitry
вообще я ж говорю, в компонент я что - то более глобальное лучше запихну. А у этого чего - нибудь уже могут быть и свои тесты
ну короче я вообще разницы не вижу, это одно и тоже. Только компонент тебе доступен сразу и везде через \Yii::$app->componentID
Borys
LOL вот это срач развели :)
Borys
По сабжу, миграция переопределяет контроллер?
Borys
Если нет, то ты можешь сделать controller injection, не?
Dmitry
По сабжу, миграция переопределяет контроллер?
нет, обсуждаем говнокод ли "инжектить в конструтор контроллера и вообще инжектить сервисы"
Borys
лупим все через Yii::$app
Borys
Dmitry
на этом и сошлись :)
Borys
Я думаю в этом огромная проблема Yii2 как фреймворка так и комьюннити
Borys
Фреймворк не диктует нормальную архитектуру из документации
Borys
В итоге почти все проекты которые ко мне приходили с модульностью, логикой в view и т.д.
Иван
ну короче я вообще разницы не вижу, это одно и тоже. Только компонент тебе доступен сразу и везде через \Yii::$app->componentID
в том то и дело, что он доступен через Yii::$app, а это прямая зависимость. Пересечение слоев
Anonymous
Фреймворк не диктует нормальную архитектуру из документации
В документации вроде как рекомендуют не инжектить
Dmitry
Фреймворк не диктует нормальную архитектуру из документации
вот как раз в этом yii молодцы, почти в кажлом разделе есть best practice. Просто их не читают. А вообще фреймворк это не про архитектуру
Anonymous
если мне память не изменяет
Dmitry
в том то и дело, что он доступен через Yii::$app, а это прямая зависимость. Пересечение слоев
то что он доступен так, это не значить что ты его так должен использовать. ты так же можешь инжектить его