Size: a a a

2019 September 22

ПО

Павел Орлов in Yii Framework 3
Да емае. Удовлетворите ее уже кто-нибудь!
источник

N👤

Narzik 👤 in Yii Framework 3
Пожалуйста не флудите в группе по вакансиями работы
источник

PC

Pavel Chaplygin in Yii Framework 3
Не надо писать в этот чат, пожалуйста. Во-первых, он не про Yii2. Во-вторых, он не про вакансии. В-третьих, (почти) все участники этого чата есть в чате по Yii2.
источник

S

SiZE in Yii Framework 3
Narzik 👤
Пожалуйста не флудите в группе по вакансиями работы
опа на
источник

S

SiZE in Yii Framework 3
создай свою группу еба :D
источник

T🐜

The Ant 🐜 in Yii Framework 3
Pavel Chaplygin
Всем привет.
Помогите, пожалуйста, не могу разобраться, как должен работать di. Например, пакет yiisoft/view.
Есть класс Yiisoft\Widget. Первый параметр конструктора - EventDispatcherInterface из PSR. Конструктор вызывается в этом же классе, в статических методах, и в конструктор передаются "protected static"-поля этого же класса. А как туда должен попасть экземпляр EventDispatcher? Даже сеттеров нет. Или эти классы ещё не доработаны? Тогда как планируется это реализовывать? Получать инстансы виджетов через контейнер?
инжектор посмотрит аргументы конструктора класса через рефлексию, подставит что найдет при создании экземпляра.
Например EventDispatcherInterface под интерфейсом будет лежать экземпляр EventDispatcher, который имлементит этот интерфейс. Его и подставит.
источник

T🐜

The Ant 🐜 in Yii Framework 3
тут тебе наверное нада посмотреть как DI работает в пыхе. Они +- все одинаковые.
источник

PC

Pavel Chaplygin in Yii Framework 3
The Ant 🐜
инжектор посмотрит аргументы конструктора класса через рефлексию, подставит что найдет при создании экземпляра.
Например EventDispatcherInterface под интерфейсом будет лежать экземпляр EventDispatcher, который имлементит этот интерфейс. Его и подставит.
Да, эту часть я понимаю. И я достаточно насмотрелся в том же симфони. Но вот этот widget вызывается напрямую из view-файлов (<?= Foo::widget() ?>), а в методе public static function widget() конструктор вызывается напрямую $widget = new static(self::$eventDispatcher, self::$webView);.
источник

PC

Pavel Chaplygin in Yii Framework 3
Pavel Chaplygin
Да, эту часть я понимаю. И я достаточно насмотрелся в том же симфони. Но вот этот widget вызывается напрямую из view-файлов (<?= Foo::widget() ?>), а в методе public static function widget() конструктор вызывается напрямую $widget = new static(self::$eventDispatcher, self::$webView);.
new static должен быть заменен на $container->get?
источник

T🐜

The Ant 🐜 in Yii Framework 3
Pavel Chaplygin
Да, эту часть я понимаю. И я достаточно насмотрелся в том же симфони. Но вот этот widget вызывается напрямую из view-файлов (<?= Foo::widget() ?>), а в методе public static function widget() конструктор вызывается напрямую $widget = new static(self::$eventDispatcher, self::$webView);.
это откуда?
источник

PC

Pavel Chaplygin in Yii Framework 3
источник

PC

Pavel Chaplygin in Yii Framework 3
Выглядит просто незаконченным (хотя бы потому, что не работает), но я пытаюсь понять, что планируется в итоге. Получать инстансы виджетов через контейнер — это было бы странно.
источник

T🐜

The Ant 🐜 in Yii Framework 3
я думал работает. И возник вопрос - "как?!" :D
источник

PC

Pavel Chaplygin in Yii Framework 3
Видимо, планировалось внедрение через сеттер. Статический. Но, даже если yii/di такое умеет, это должно быть в конфиге. Я вот не знаю, можно ли такое настроить.
источник

T🐜

The Ant 🐜 in Yii Framework 3
м.б. через магию __callStatic, по типу ларовских фасадов...
источник

T🐜

The Ant 🐜 in Yii Framework 3
не нифига... походу просто не закончен
источник

PC

Pavel Chaplygin in Yii Framework 3
Чтобы оно работало, достаточно где-то в коде до прямого использования сделать $container->get(Widget::class). Но это мало похоже на правильное решение.
источник

AM

Alexander Makarov in Yii Framework 3
Работает :)
источник

AM

Alexander Makarov in Yii Framework 3
Там тесты есть.
источник

PC

Pavel Chaplygin in Yii Framework 3
Pavel Chaplygin
Чтобы оно работало, достаточно где-то в коде до прямого использования сделать $container->get(Widget::class). Но это мало похоже на правильное решение.
В тестах сделано вот это. А как делать в реальном приложении?
источник