Size: a a a

2020 April 08

DS

Dmitriy S in Yii Framework 3
Алексей R
пользовательских
Там можно глобалочку зафигачить, как с dd()😉
Будет getFromContainer(), invoke(), createObject()
@samdark так вон прямо так и заявил, даешь контейнер в глобальных функциях!😂
источник

Д

Дмитрий in Yii Framework 3
Dmitriy S
Там можно глобалочку зафигачить, как с dd()😉
Будет getFromContainer(), invoke(), createObject()
@samdark так вон прямо так и заявил, даешь контейнер в глобальных функциях!😂
Ага, я заценил. Надо бы такое выпилить)
источник

DS

Dmitriy S in Yii Framework 3
Дмитрий
Ага, я заценил. Надо бы такое выпилить)
Я бы вообще глобальные регал через автолоад композера
источник

AM

Alexander Makarov in Yii Framework 3
Dmitriy S
Я бы вообще глобальные регал через автолоад композера
Так и было изначально. Но тогда контейнер недоступен и не выйдет сделать что-то типа <?= url('bla/bla') ?>
источник

DS

Dmitriy S in Yii Framework 3
Alexander Makarov
Так и было изначально. Но тогда контейнер недоступен и не выйдет сделать что-то типа <?= url('bla/bla') ?>
Ну url(bla-bla-bla) - это фиговая фича
источник

NO

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

Допустим, у меня в классе создаётся десяток записей в лог. Без использования контейнера я их создаю через new и закидываю в метод $log->append($logRecord).

Зависимостью в конструкторе от LogRecord этот кейс не решается...
источник

NO

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

DS

Dmitriy S in Yii Framework 3
Nex Otaku
Есть кейсы когда нужно именно создавать объекты.

Допустим, у меня в классе создаётся десяток записей в лог. Без использования контейнера я их создаю через new и закидываю в метод $log->append($logRecord).

Зависимостью в конструкторе от LogRecord этот кейс не решается...
Тут фабрику юзаешь
источник

NO

Nex Otaku in Yii Framework 3
Я не беру простейшие случаи когда весь проект жёстко завязан на фреймворк. Я хочу, чтобы зависимость кода от фреймворка была минимальная, а также чтобы тестировать код доменной области можно было вообще без фреймворка.
источник

DS

Dmitriy S in Yii Framework 3
Dmitriy S
Ну url(bla-bla-bla) - это фиговая фича
Вообще для yii3 глобальные функции - это неудачная идея. В yii2 оно хоть как-то соотвествовало архитектуре, а тут нет.
источник

NO

Nex Otaku in Yii Framework 3
Dmitriy S
Тут фабрику юзаешь
Окей, допустим фабрику, появляется зависимость от фабрики, далее снова пошло по цепочке... Придётся КАЖДЫЙ new в проекте заменять на вызов фабрики.
источник

DS

Dmitriy S in Yii Framework 3
Nex Otaku
Окей, допустим фабрику, появляется зависимость от фабрики, далее снова пошло по цепочке... Придётся КАЖДЫЙ new в проекте заменять на вызов фабрики.
$this->factory->create(MyClass::class);
источник

NO

Nex Otaku in Yii Framework 3
И? Я знаю, что такое фабрика...
источник

NO

Nex Otaku in Yii Framework 3
Не одну книгу по программированию прочитал...
источник

DS

Dmitriy S in Yii Framework 3
Для лога там мутный пример просто, создание объектов LogRecord должено быть инкапсулировано в логере
источник

NO

Nex Otaku in Yii Framework 3
Никому не должно...
источник

А

Алексей R in Yii Framework 3
Dmitriy S
Там можно глобалочку зафигачить, как с dd()😉
Будет getFromContainer(), invoke(), createObject()
@samdark так вон прямо так и заявил, даешь контейнер в глобальных функциях!😂
ну это и есть пользовательская функция
источник

NO

Nex Otaku in Yii Framework 3
Тут фабрику навязали, там инкапсуляцию навязали надуманную... В итоге проект придётся подстраивать под DI-way и переделывать сильно, что ещё хуже...
источник

DS

Dmitriy S in Yii Framework 3
Алексей R
ну это и есть пользовательская функция
Да, но она в корневом неймспейсе
источник

DS

Dmitriy S in Yii Framework 3
Nex Otaku
Тут фабрику навязали, там инкапсуляцию навязали надуманную... В итоге проект придётся подстраивать под DI-way и переделывать сильно, что ещё хуже...
Ну как бы Yii3 - это и есть DI-way
источник