Size: a a a

2020 April 08

AM

Alexander Makarov in Yii Framework 3
new X, естественно, ничего автоматом делать не будет
источник

AM

Alexander Makarov in Yii Framework 3
Nex Otaku
То есть если у меня есть цепочка:
A создаёт B, B создаёт C, C создаёт D
И у меня был код типа $b = new B()

То когда мне понадобилось внедрить зависимость в D, мне придётся по всей этой цепочке пройти и в каждое звено переделывать создание на использование контейнера? Плюс сам класс A создавать через него...
Нет. Не придётся. Ты получаешь одну зависимость. Конечную, которая тебе реально нужна. Или вот где я написал выше или прям через get(), но так не надо. И всё. Остальное прокидывается само.
источник

NO

Nex Otaku in Yii Framework 3
Alexander Makarov
Нет. Не придётся. Ты получаешь одну зависимость. Конечную, которая тебе реально нужна. Или вот где я написал выше или прям через get(), но так не надо. И всё. Остальное прокидывается само.
Вот где выше это где?
источник

NO

Nex Otaku in Yii Framework 3
Ну вот в C я создаю D через контейнер, так как в D понадобилось какую-то зависимость внедрить.

Значит, в C мне нужен контейнер. Как получить этот контейнер? Опять через внедрение зависимостей.

И вот уже C получил зависимость, а значит нам нужно менять B... И так далее по всей цепочке.
источник

DS

Dmitriy S in Yii Framework 3
Nex Otaku
Ну вот в C я создаю D через контейнер, так как в D понадобилось какую-то зависимость внедрить.

Значит, в C мне нужен контейнер. Как получить этот контейнер? Опять через внедрение зависимостей.

И вот уже C получил зависимость, а значит нам нужно менять B... И так далее по всей цепочке.
Ты на yii2 контейнер использовал?
источник

NO

Nex Otaku in Yii Framework 3
Само собой... Оттуда эта боль и родилась.

Я хочу чтобы в коде не было понатыкано контейнера, когда без него можно обойтись.

К тому же, необходимость менять A, B, C только потому, что что-то поменялось в D, нарушает главные архитектурные принципы )
источник

NO

Nex Otaku in Yii Framework 3
Если я что-то делаю не так, или чего-то не знаю, прошу меня научить как правильно ) Я буду очень рад )
источник

DS

Dmitriy S in Yii Framework 3
В С не нужно создавать D через $container->get(D::class), как во многих случаях не нужно делать этого было и в yii2. Если тебе в С нужнен D, то поставь его зависимостью в конструкторе и сохрани в приватную переменную. Для конроллеров также можно ставить зависимости и в параметрах экшинов, они тоже будут разрешены через контейнер.
источник

А

Алексей R in Yii Framework 3
походу реально будут пользоваться популярностью пользовательские функции inject() и make() :D лишь бы не разбираться с прокидываением зависимостей
источник

DS

Dmitriy S in Yii Framework 3
источник

DS

Dmitriy S in Yii Framework 3
Алексей R
походу реально будут пользоваться популярностью пользовательские функции inject() и make() :D лишь бы не разбираться с прокидываением зависимостей
А зачем метод inject()?
источник

DS

Dmitriy S in Yii Framework 3
Dmitriy S
А зачем метод inject()?
Или ты о глобальных функциях?)
источник

А

Алексей R in Yii Framework 3
Dmitriy S
А зачем метод inject()?
точно, invoke
источник

А

Алексей R in Yii Framework 3
Dmitriy S
Или ты о глобальных функциях?)
пользовательских
источник

Д

Дмитрий in Yii Framework 3
Алексей R
походу реально будут пользоваться популярностью пользовательские функции inject() и make() :D лишь бы не разбираться с прокидываением зависимостей
И в инструкцию для перехода с 2 на 3 версию написать регулярку по замене createObject -> invoke)
источник

А

Алексей R in Yii Framework 3
Дмитрий
И в инструкцию для перехода с 2 на 3 версию написать регулярку по замене createObject -> invoke)
пффф.. регулярку... тупо автозамена по всему коду )
источник

Д

Дмитрий in Yii Framework 3
Nex Otaku
Если я что-то делаю не так, или чего-то не знаю, прошу меня научить как правильно ) Я буду очень рад )
Ты напиши код, который вызывает проблемы, а мы посмотрим
источник

DS

Dmitriy S in Yii Framework 3
Дмитрий
И в инструкцию для перехода с 2 на 3 версию написать регулярку по замене createObject -> invoke)
Там $factory->create() надо)
источник

Д

Дмитрий in Yii Framework 3
Алексей R
пффф.. регулярку... тупо автозамена по всему коду )
А автозамену как делать? Регуляркой)
источник

Д

Дмитрий in Yii Framework 3
Dmitriy S
Там $factory->create() надо)
Для разнообразия можно и фабрику подсовывать
источник