🐴
к интерфейсу?
Sergey
)))
Sergey
давай по другому
🐴
поскольку они оба то интерфейса зависят
Sergey
кто хочет получить DTO?
🐴
приложение
Sergey
если коротко - что делает приложение напомни
Sergey
приложение
ну то есть у тебя есть некий application layer
🐴
печатает ChangeLog
Sergey
вот там и должен быть dto
🐴
приложение берет из гита последний тег и печатает, что в него вошло по сравнению с предыдущим
Sergei
к интерфейсу?
Моё мнение - к интерфейсу. Который обещает эти сущности генерировать и выдавать по запросу.
🐴
окей
Sergey
Sergei
Проясни
Sergey
кто у тебя главный - интерфейс или приложение?
🐴
я вижу зависимости так [Приложение] -> [Интерфейс+ДТО] <- [Гит]
Sergey
представь на секундочку что "интерфейс" не является частью приложения, это просто надстройка над ним
Sergey
🐴
он и не является
Sergey
зачем тогда тебе приложение в твоей схеме? что оно делает если у тебя интерфейс напрямую получает нужную информацию?
🐴
ну потому что они оба зависят от интерфейса (один принимает как депенденси, а другой имплементирует)
Sergey
🐴
как не зависит?
🐴
оно его получает в конструктор
Sergey
ну блин в этом смысл разделение
Sergey
интерфейс зависит от приложения, а не приложение зависит от интерфейса
Sergey
приложение ничего вообще не знает об интерфейсе
Sergey
Sergey
зачем в конструктор?
Sergey
идем в википедию читать на тему Inversion of control
🐴
не понимаю если у тебя есть class A { __construct(B $b); }
🐴
кто от кого зависит*
🐴
?
🐴
A от B, правлиьно?
Sergey
повторюсь
Sergey
то что ты передаешь UI в конструктор приложения - это уже ошибка
Sergey
приложение надо передавать в конструктор UI
Sergey
образно
Sergey
Inversion of Control это называется
🐴
у меня нет UI в этой схеме
Sergey
не приложение дергает фреймворк, а фреймворк дергает приложение
🐴
UI за скобками пока
🐴
я не понимаю
Sergei
Sergey
Sergey
и почитай про inversion of control
🐴
A { __construct(B $b); } B - интерфейс
🐴
A - приложене
🐴
A зависит от B
Sergei
🐴
что тут н етак?
Sergey
а приложение НИЧЕГО не должно знать о UI
🐴
блин
🐴
еще раз
Sergey
иначе нет никакого смысла в разделении на слои
🐴
B это не UI
🐴
это интерфейс доступа к гиту, я из него читаю
Sergey
ааа
🐴
имплементация может быть разная
Sergey
тогда тебе нужна инверсия зависимости)
🐴
либо консольный гит
Sergey
и тогда все будет хорошо)
🐴
либо через сеть
🐴
ну я и организую ее интерфейсом
🐴
и приложние и гейтвей к гиту - оба зависят от интерфейся
🐴
а
🐴
интерфейс описывает методы, которые должны возвращать ДТОшки
Sergey
https://gist.github.com/fesor/4e56f536448463d4e5f4939287b42f6d
🐴
да, правильно у тебя в коде
Sergey
обрати внимание что Infrastructure зависит от App а не наоборот
Sergey
ну мол ты науровне слоя приложения сказал "у меня должна быть штука которая вернет мне мой DTO"
Sergey
и тогда DTO точно относится к слою приложения без всяких оговорок
Sergey
а в инфраструктурной фигне ты уже будешь имплементить этот интерфейс
Sergey
и твое приложение останется изолированным от инфраструктуры
Sergey
точно так же собственно и с UI
🐴
понял
🐴
да