Size: a a a

2021 April 27

Д

Дмитрий in Yii Framework 2
ну di немного не для этого.. тут у тебя бизнес-логика, решить откуда брать автора. она не про di
источник

VV

Vladislav Varlamov in Yii Framework 2
Даже абстрагируясь от моего примера, а простой случай, когда есть 1 интерфейс, а реализации могут отличаться от конкретного случая
источник

Д

Дмитрий in Yii Framework 2
ну так делай контракт, и пили разные реализации. потом хоть чем конструируй реализацию. хоть фабрикой
источник

VV

Vladislav Varlamov in Yii Framework 2
Допустим у меня есть FileInterface {public function getFile(string $path) } и в разных и местах у меня разный этот файл, где-то лезет к нам в на диск, где-то в s3 , где-то по api.
Тут тоже нужно будет всегда везде явно прокидывать нужную реализацию?

Или всё же в нужном модуле/контроллере сказать, что в рамках этого запроса файл использовать такой?
источник

V😉

Vladimir 😉 in Yii Framework 2
я бы создал отдельный класс в котором уже реализовал методы которые будут создавать нужный объект
источник

VV

Vladislav Varlamov in Yii Framework 2
этому классу тоже надо как-то сообщить откуда брать, интерфейс то один
источник

ES

Eugene She in Yii Framework 2
У тебя же получается клиентский кот знает какую реализацию нужно использовать для того чтобы работать с тем или иным классом
источник

V😉

Vladimir 😉 in Yii Framework 2
вот на примере мессенджера я так делаю, не знаю подходит такое под твою задачу
источник

ES

Eugene She in Yii Framework 2
А сама реализация у тебя зависит от интерфейса
источник

VV

Vladislav Varlamov in Yii Framework 2
это что-то вроде фабрики у тебя получается, но зачем? DI сам по себе как одна большая фабрика
источник

Д

Дмитрий in Yii Framework 2
начнем с того что это только у yii2 можно что-то засеттить в контейнер на уровне контроллера.
вообще это неправильно. в рантайме модменять реализацию
источник

Д

Дмитрий in Yii Framework 2
у yii3, например, нет метода set у контейнера. он есть только на уровне создания из конфигов.
источник

V😉

Vladimir 😉 in Yii Framework 2
я почему то DI пока стороной обхожу, не знаю, уперся в модульную разработку, пока не знаю сочетаемы ли оно всё
источник

V😉

Vladimir 😉 in Yii Framework 2
получается лучше вообще синглтоны не использовать по хорошему? или я что-то не так понял
источник

Д

Дмитрий in Yii Framework 2
почему. можно. я про что что нежелательно подменять реализацию когда-то, когда уже идет исполнение чего-либо. в каком-то экшене, например. или глубже.
источник

V😉

Vladimir 😉 in Yii Framework 2
а, все понял. Да это верно
источник

VV

Vladislav Varlamov in Yii Framework 2
в симфони тоже можно конфигурировать как душе угодно
источник

Д

Дмитрий in Yii Framework 2
если реализация зависит от чего-то конкретного, типа книги, например, зачем подменять глобально в контейнере реализацию? сделай фабрику.
источник

V😉

Vladimir 😉 in Yii Framework 2
соглы, тоже через фабрику бы делал
источник

Д

Дмитрий in Yii Framework 2
например, ты поменяешь реалзиацию Author у себя где-то. я как об этом узнаю, если я буду писать код параллельно с тобой, который исполняеттся где-то тут же в этом экшене
источник