powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / yii2 форсированная загрузка компонентов
16 сообщений из 16, страница 1 из 1
yii2 форсированная загрузка компонентов
    #39390655
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет.

Нарвался на принеприятнейшую особенность lazy-load от yii2. Он, оказывается, компоненты инициализирует не при загрузке приложения, а по востребованию.

А у меня есть один компонент, который при инициализации приложения должен свои правки в конфиг внести (теоретически в итоге такой компонент будет не один, а у каждого из них должна быть такая возможность).

Всё, что сейчас удалось придумать - это добавить в файл конфига следующие строки:
Код: php
1.
2.
3.
4.
5.
    'on beforeRequest' => function(){
        foreach(Yii::$app->getComponents() as $k=>$m){
            Yii::$app->get($k);
        }
    },


Ну то есть при загрузке апликухи я просто перебираю все компоненты и гружу их (просто кидаю запрос, что бы lazy-load сработал). Но это же как-то костыльно, противоестественно и даже аморально...

Есть ли какой-нить нормальный метод достичь поставленной цели (отключить лэзи лоад для некоторых компонентов)?
...
Рейтинг: 0 / 0
yii2 форсированная загрузка компонентов
    #39390702
MikkiMouse
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Програмёр,

Никогда не пользовался вашим йии, но вот же ж гуглится за пару минут - Recommended Practices from The Definitive Guide to Yii 2.0 )))
...
Рейтинг: 0 / 0
yii2 форсированная загрузка компонентов
    #39390753
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задачу звучит абсурдно, зачем компоненту вносить правки в конфиг?
...
Рейтинг: 0 / 0
yii2 форсированная загрузка компонентов
    #39390764
Фотография r u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hett,
динамический конфиг )

представляю как приятно такое дебажить
...
Рейтинг: 0 / 0
yii2 форсированная загрузка компонентов
    #39390938
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MikkiMouseПрограмёр,

Никогда не пользовался вашим йии, но вот же ж гуглится за пару минут - Recommended Practices from The Definitive Guide to Yii 2.0 )))

Мда. За подсказку большое спасибо... Теперь буду знать, что не всё что bootstrap относится к Bootstrap :-) (могли бы уж уникальное название придумать для термина, что бы не путать)

Но в моём случае неприменимо похоже. Дело в том, что я создаю не экстеншены, а модули... и устанавливаться эти модули будут не через композер. Это будет cms с собственной системой управления модулями (все другие методы установки с использованием сторонних сервисов были отброшены как неудобные для конечного пользователя)
...
Рейтинг: 0 / 0
yii2 форсированная загрузка компонентов
    #39390953
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
r uHett,
динамический конфиг )

представляю как приятно такое дебажить

Всё норм. Конфиги не будут меняться, они будут дописываться. В данном случае такое понадобилось потому, что при установке модуль должен подменять стандартный класс User на свой. А при удалении должен вернуть всё как было. И что бы не возникало проблем с "как было", я не переписываю сам конфиг при установке модуля, а просто прокидываю компонент, который при каждом запуске вносит необходимые для своего модуля коррективы.

Соответственно модуля нет - никто никакие коррективы не вносит (то есть достигнуто состояние "как было" до установки)
...
Рейтинг: 0 / 0
yii2 форсированная загрузка компонентов
    #39390962
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторпри установке модуль должен подменять стандартный класс User на свой
Зачем это?
...
Рейтинг: 0 / 0
yii2 форсированная загрузка компонентов
    #39390969
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HettЗадачу звучит абсурдно, зачем компоненту вносить правки в конфиг?

Не следует цепляться именно к тому, что я конфиг меняю :) ... Мне надо подписаться на события других модулей например. А для этого мне также при старте приложения надо запустить свой компонент, который все подписки оформит.

Просто в этом случае мне понадобилось внести правки в конфиг, но решение поставленной задачи в принципе решает очень много вопросов.

Из-за чего свой способ я считаю костыльным - потому что он без разбора прогрузит все компоненты объявленные в системе. Во избежание этого можно было бы такие "автозагружаемые" компоненты унаследовать от отдельного класса со свойством autoLoad и перед загрузкой компонентов проверять значится ли в их конфиге это свойство. Но и это мне кажется не лучшим решением, потому что разработка усложняется неоправданно сильно (лишние правила по наследованию). Надеялся что в yii уже есть настройка, позволяющая отключить lazy-load для некого компонента, и я просто не могу её найти.
...
Рейтинг: 0 / 0
yii2 форсированная загрузка компонентов
    #39390992
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторИз-за чего свой способ я считаю костыльным - потому что он без разбора прогрузит все компоненты объявленные в системе.

Костылем он является потому, что заменяет класс User =)
...
Рейтинг: 0 / 0
yii2 форсированная загрузка компонентов
    #39390998
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В чем проблема навесить ивенты на нужные модели?
http://www.yiiframework.com/doc-2.0/guide-concept-events.html
...
Рейтинг: 0 / 0
yii2 форсированная загрузка компонентов
    #39391169
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HettавторИз-за чего свой способ я считаю костыльным - потому что он без разбора прогрузит все компоненты объявленные в системе.

Костылем он является потому, что заменяет класс User =)

Ну не... костылём оно становится не из-за этого. User - это класс, которые реализует IdentityInterface. Соответственно вполне логично, что модуль "users" подменяет этот класс на свой, потому как именно он поставляет нужные модели для работы с пользователями

Hett, при всём уважении к тебе, я считаю что ты просто не вник в саму суть вопроса.
А насчёт ивэнтов... Я так понимаю это ответ на "Мне надо подписаться на события других модулей например"... Так я не совсем понимаю каким образом ответ связан с вопросом. :)) Подписку то кто-то оформить должен. Я же не могу перехватить событие, если не был на него ранее подписан. Или это предложение, что модели одного модуля могли бы сами подписаться на события моделей другого модуля? Если да, то это неприемлемо, потому что по задумке модули должны связываться в одной точке (через один интерфейс)... Иначе если понадобится что-то от чего-то отвязать, это вызовет уйму проблем и часы поиска по всему модулю на факт наличия каких либо остаточных связей.
...
Рейтинг: 0 / 0
yii2 форсированная загрузка компонентов
    #39391194
SharuPoNemnogu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а почему компонент лезет в конфиг приложения, пуст приложение берет конфиг компонента и вмерживает его в свой при инициализации.
...
Рейтинг: 0 / 0
yii2 форсированная загрузка компонентов
    #39391201
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да это я уже про замену класса.
В Yii1 была опция prelaod.

https://github.com/yiisoft/yii2/blob/master/docs/guide/structure-applications.md#yiibaseapplicationbootstrapbootstrap-

bootstrap - оно?
...
Рейтинг: 0 / 0
yii2 форсированная загрузка компонентов
    #39391359
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SharuPoNemnoguа почему компонент лезет в конфиг приложения, пуст приложение берет конфиг компонента и вмерживает его в свой при инициализации.

А разница? :) Результат будет тем же... Но только расширяемость подхода будет ниже... Потому что есть то, что невозможно реализовать через изменения конфига, а потому в любом случае в итоге понадобится метод, который сможет завершить начатое :)
...
Рейтинг: 0 / 0
yii2 форсированная загрузка компонентов
    #39391366
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HettДа это я уже про замену класса.
В Yii1 была опция prelaod.

https://github.com/yiisoft/yii2/blob/master/docs/guide/structure-applications.md#yiibaseapplicationbootstrapbootstrap-

bootstrap - оно?
Во... вот это похоже оно. Немного позже (сегодня) попробую и отпишусь сюда. Спасибо :)

P.S. Про bootstrap мне ещё MikkiMouse писал, но там как-то хитро было всё завёрнуто через composer.json (ну то есть туда как-то композер ещё притянули)...
...
Рейтинг: 0 / 0
yii2 форсированная загрузка компонентов
    #39393745
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К сожалению никак не мог к этой задаче подобраться. Наконец-то случилось :)

Всё работает, спасибо!
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / yii2 форсированная загрузка компонентов
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]