Size: a a a

2020 April 08

Д

Дмитрий in Yii Framework 3
Алексей R
Сделать testInjector для тестов
ну они есть - ты сделал.
но дергать приватные методы из любого места как-то не очень
источник

NO

Nex Otaku in Yii Framework 3
костыль...
источник

А

Алексей R in Yii Framework 3
Дмитрий
ну они есть - ты сделал.
но дергать приватные методы из любого места как-то не очень
Только из тестов конечно )
источник

А

Алексей R in Yii Framework 3
На самом деле дичь и я это не серьезно
источник

AM

Alexander Makarov in Yii Framework 3
Nex Otaku
без указания зп)
Если интересно, пиши, я подробнее расскажу что как.
источник

AM

Alexander Makarov in Yii Framework 3
Nex Otaku
я хз что такое ваш инжектор) кстати, до сих пор не знаю, как в Yii3 работает DI, почитать что-то уже можно?
Год уже как можно.
источник

NO

Nex Otaku in Yii Framework 3
Alexander Makarov
Год уже как можно.
Вот эта страница?

Там нет самого главного - как создавать объекты, в которые автоматически будут инжектиться зависимости. Вот я допустим в конструкторе класса A указал, что нужен B.
class A {
   private $b;
   
   public function __construct(B $b)
   {
       $this->b = $b;
   }
}

Если я сделаю так:
$a = new A();

Всё заинжектится нормально? В Yii2 для внедрения зависимостей надо было создавать явно через createObject:
$a = Yii::createObject('A');

Здесь такое же?
источник

NO

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

DS

Dmitriy S in Yii Framework 3
Nex Otaku
Вот эта страница?

Там нет самого главного - как создавать объекты, в которые автоматически будут инжектиться зависимости. Вот я допустим в конструкторе класса A указал, что нужен B.
class A {
   private $b;
   
   public function __construct(B $b)
   {
       $this->b = $b;
   }
}

Если я сделаю так:
$a = new A();

Всё заинжектится нормально? В Yii2 для внедрения зависимостей надо было создавать явно через createObject:
$a = Yii::createObject('A');

Здесь такое же?
> Если я сделаю так:
> $a = new A();
> Всё заинжектится нормально?
Точно на пхп программишь?😉
источник

NO

Nex Otaku in Yii Framework 3
Dmitriy S
> Если я сделаю так:
> $a = new A();
> Всё заинжектится нормально?
Точно на пхп программишь?😉
Много лет... И знаю что в PHP очень много магии..
источник

NO

Nex Otaku in Yii Framework 3
Вдруг вы подрубили куда-то штуку, которая в конструкторы подсовывает параметры..
источник

NO

Nex Otaku in Yii Framework 3
В методы ведь прокидывается )
источник

NO

Nex Otaku in Yii Framework 3
Как создать объект-то?
источник

АН

Александр Некрасов in Yii Framework 3
Nex Otaku
Как создать объект-то?
$container->get(A::class)
источник

DS

Dmitriy S in Yii Framework 3
$a = Yii::createObject('A'); - это фабрика.
Инжектится автоваерингом в там где ты либо вызываешт $injector->invoke(), либо $container->get(A::class), либо $factory->create(A::class)
источник

NO

Nex Otaku in Yii Framework 3
Окей, а откуда $container возьмётся?
источник

DS

Dmitriy S in Yii Framework 3
Nex Otaku
Окей, а откуда $container возьмётся?
Из ContainerInterface
источник

AM

Alexander Makarov in Yii Framework 3
Инжектится автоматов через конструкторы и экшны контроллера, в middleware, в виджетах.
источник

AM

Alexander Makarov in Yii Framework 3
Всё что тащится туда как зависимости тоже получает каскадно автоматику для конструктора.
источник

NO

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

То когда мне понадобилось внедрить зависимость в D, мне придётся по всей этой цепочке пройти и в каждое звено переделывать создание на использование контейнера? Плюс сам класс A создавать через него...
источник