Size: a a a

2020 July 24

В

Виктор in Yii Framework 3
Или ты имеешь ввиду совсем убрать di и оставить только method_exists?
источник

DS

Dmitriy S in Yii Framework 3
Виктор
А чем они кардинально различаются? DI (по крайней мере, наша версия) абсолютно одинаково обработает оба варианта.
Так проверками и отличаются, в первом случае проверка быстрее, юзается в том же роутере
источник

DS

Dmitriy S in Yii Framework 3
Виктор
Или ты имеешь ввиду совсем убрать di и оставить только method_exists?
Не совсем, но суть та же, я ж скинул проверку в роутере
https://github.com/yiisoft/router/blob/master/src/Route.php#L250
источник

В

Виктор in Yii Framework 3
Я бы в обоих местах на проде оставил максимум is_callable($definition) || (is_array($definition) && array_keys($definition) === [0, 1]). Этот вариант даже автолоуд не запустит, который процентах в 80 случаев и не нужен будет.
источник

DS

Dmitriy S in Yii Framework 3
Просто в ивентах мы можем обработчики вешать на интерфейс
[MessangerInterface::class, 'logMessage']
источник

В

Виктор in Yii Framework 3
А то видел уже, как автолоуд съедает 30% времени запроса)))
источник

В

Виктор in Yii Framework 3
Либо надо хотя бы в документации указывать, что мол это узкое место роутера/конфигуратора, и на реальных проектах меняйте реализацию на свою
источник

В

Виктор in Yii Framework 3
Ибо для эндпоинта, который, например, ставит задачу в очередь, текущая реализация даже с get_class_methods вместо $container->get() сожрет времени на проверку конфига намного больше, чем полезная нагрузка
источник

DS

Dmitriy S in Yii Framework 3
Виктор
Либо надо хотя бы в документации указывать, что мол это узкое место роутера/конфигуратора, и на реальных проектах меняйте реализацию на свою
В роутере я тормозов не заметил, но бенчмарк надо будет сделать
источник

DS

Dmitriy S in Yii Framework 3
Виктор
Ибо для эндпоинта, который, например, ставит задачу в очередь, текущая реализация даже с get_class_methods вместо $container->get() сожрет времени на проверку конфига намного больше, чем полезная нагрузка
это надо проверить
источник

В

Виктор in Yii Framework 3
Dmitriy S
В роутере я тормозов не заметил, но бенчмарк надо будет сделать
В бенче надо тогда в каждом definition объявлять разные классы, не загруженные автолоудером ранее. И, желательно, разных вендоров.
источник

DS

Dmitriy S in Yii Framework 3
По иветам я решение написал, проверяем конфиг только в дев
источник

В

Виктор in Yii Framework 3
Хотя, стоп, тут я ошибся
источник

В

Виктор in Yii Framework 3
С вариантом ClassName::class класс уже савтолоудится
источник

RM

Rustam Mamadaminov in Yii Framework 3
источник

А

Алексей R in Yii Framework 3
Виктор
С вариантом ClassName::class класс уже савтолоудится
У верен? Попробуй на несуществующем классе
источник

В

Виктор in Yii Framework 3
Еще мысль насчет конфигуратора эвентов. А что если заменить его на сервис провайдер?
источник

AB

Alexander Borisov in Yii Framework 3
Так в итоге появится compiler pass 🙂
источник

В

Виктор in Yii Framework 3
Alexander Borisov
Так в итоге появится compiler pass 🙂
Хито?
источник

AB

Alexander Borisov in Yii Framework 3
компилируемый di контейнер
источник