Size: a a a

2021 May 13

AB

Alexander Borisov in Yii Framework 3
Думаю плагин для шторма не заставит себя долго ждать и переход по cmd+click будет доступен в конфиге
источник

AB

Alexander Borisov in Yii Framework 3
как бы это выглядело тогда?
источник

DS

Dmitriy S in Yii Framework 3
Какой конфиг удобней, этот
SomeEvent::class => [
     function (ContainerInterface $container) {
           $connection =  $container->get(app.default-connection');
           (new SomeListener($connection))();
    }
]

или этот


SomeEvent::class => [
    'app.default-connection.some-listener'  
]
источник

AB

Alexander Borisov in Yii Framework 3
Выпиливать уже поздно, разве что если вторую версию сразу зарелизить*
источник

В

Виктор in Yii Framework 3
источник

В

Виктор in Yii Framework 3
А в конфиге эвентов - соответственно, лямбды: fn (SomeFactory $factory) => $factory->get('some-id') или fn (ConnectionFactory $factory) => new SomeHandler($factory->get('connection-id'))
источник

AB

Alexander Borisov in Yii Framework 3
А в чем профит? Получается дефинишн этих эвентов переносишь из конфига контейнера в конфиг приложения, по факту он таким же остается, лишняя прослойка, разве нет?
источник

В

Виктор in Yii Framework 3
Большой профит, если вложенность зависимостей больше 1, как было в очередях и может быть в твоём примере. Ну и плюс слой абстракции, который актуален для библиотеки или модуля и неактуален для приложения.
источник

DS

Dmitriy S in Yii Framework 3
Релиз был четыре часа назад)
источник

AB

Alexander Borisov in Yii Framework 3
Быстро удаленный тег релизом не считается? 🙂
источник

DS

Dmitriy S in Yii Framework 3
Зависит от количества пользователей пакета)
источник

В

Виктор in Yii Framework 3
А ещё эту фабрику можно переиспользовать, убрать в другой модуль или вынести в отдельный пакет. Только изменить ее неймспейс в конфиге - и готово, все остальное остаётся нетронутым.
источник

В

Виктор in Yii Framework 3
Но да, надо разбирать в каждом случае, насколько это профитно, декларативный подход на императивный менять.
источник

AB

Alexander Borisov in Yii Framework 3
Правильно понимаю, что чтоб получать Queue всегда придется юзать фабрику?
источник

В

Виктор in Yii Framework 3
Да нет, и без нее можно. Но с ней иногда проще. Скажем, чтобы объявить 2 разные очереди как зависимости двух разных классов с адаптером amqp, сейчас надо в конфиге объявить около 10 разных классов, не помню точно (если массивами объявлять), даже если только в 1 будут отличия, а остальные 4 пары полностью идентичны. С фабрикой можно сделать это как угодно, все зависит от задач и фантазии.
источник

В

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

NO

Nex Otaku in Yii Framework 3
ужасть )
источник
2021 May 14

AB

Alexander Borisov in Yii Framework 3
я к тому, чтобы помимо фабрики сразу создать сервисы для всех каналов (с помощью этой же фабрики):
[
   Queue::class => fn (QueueFactory $factory) => $factory->create(),
   'yii.queue.channel1' => fn (QueueFactory $factory) => $factory->create('channel1'),
   'yii.queue.channel2' => fn (QueueFactory $factory) => $factory->create('channel2'),
   'yii.queue.channel3' => fn (QueueFactory $factory) => $factory->create('channel3'),
]
источник

В

Виктор in Yii Framework 3
Можно и так. Можно и чуть иначе:
SomeClass::class => [
   '__constructor()' => [fn (QueueFactory $factory) => $factory->create('channel1')],
],
источник

В

Виктор in Yii Framework 3
Это уже зависит от того, где как проще/уместее сделать
источник