|
yii2 форсированная загрузка компонентов
|
|||
---|---|---|---|
#18+
Всем привет. Нарвался на принеприятнейшую особенность lazy-load от yii2. Он, оказывается, компоненты инициализирует не при загрузке приложения, а по востребованию. А у меня есть один компонент, который при инициализации приложения должен свои правки в конфиг внести (теоретически в итоге такой компонент будет не один, а у каждого из них должна быть такая возможность). Всё, что сейчас удалось придумать - это добавить в файл конфига следующие строки: Код: php 1. 2. 3. 4. 5.
Ну то есть при загрузке апликухи я просто перебираю все компоненты и гружу их (просто кидаю запрос, что бы lazy-load сработал). Но это же как-то костыльно, противоестественно и даже аморально... Есть ли какой-нить нормальный метод достичь поставленной цели (отключить лэзи лоад для некоторых компонентов)? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2017, 21:55 |
|
yii2 форсированная загрузка компонентов
|
|||
---|---|---|---|
#18+
Програмёр, Никогда не пользовался вашим йии, но вот же ж гуглится за пару минут - Recommended Practices from The Definitive Guide to Yii 2.0 ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2017, 01:38 |
|
yii2 форсированная загрузка компонентов
|
|||
---|---|---|---|
#18+
Задачу звучит абсурдно, зачем компоненту вносить правки в конфиг? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2017, 08:41 |
|
yii2 форсированная загрузка компонентов
|
|||
---|---|---|---|
#18+
Hett, динамический конфиг ) представляю как приятно такое дебажить ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2017, 08:57 |
|
yii2 форсированная загрузка компонентов
|
|||
---|---|---|---|
#18+
MikkiMouseПрограмёр, Никогда не пользовался вашим йии, но вот же ж гуглится за пару минут - Recommended Practices from The Definitive Guide to Yii 2.0 ))) Мда. За подсказку большое спасибо... Теперь буду знать, что не всё что bootstrap относится к Bootstrap :-) (могли бы уж уникальное название придумать для термина, что бы не путать) Но в моём случае неприменимо похоже. Дело в том, что я создаю не экстеншены, а модули... и устанавливаться эти модули будут не через композер. Это будет cms с собственной системой управления модулями (все другие методы установки с использованием сторонних сервисов были отброшены как неудобные для конечного пользователя) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2017, 12:08 |
|
yii2 форсированная загрузка компонентов
|
|||
---|---|---|---|
#18+
r uHett, динамический конфиг ) представляю как приятно такое дебажить Всё норм. Конфиги не будут меняться, они будут дописываться. В данном случае такое понадобилось потому, что при установке модуль должен подменять стандартный класс User на свой. А при удалении должен вернуть всё как было. И что бы не возникало проблем с "как было", я не переписываю сам конфиг при установке модуля, а просто прокидываю компонент, который при каждом запуске вносит необходимые для своего модуля коррективы. Соответственно модуля нет - никто никакие коррективы не вносит (то есть достигнуто состояние "как было" до установки) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2017, 12:16 |
|
yii2 форсированная загрузка компонентов
|
|||
---|---|---|---|
#18+
авторпри установке модуль должен подменять стандартный класс User на свой Зачем это? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2017, 12:21 |
|
yii2 форсированная загрузка компонентов
|
|||
---|---|---|---|
#18+
HettЗадачу звучит абсурдно, зачем компоненту вносить правки в конфиг? Не следует цепляться именно к тому, что я конфиг меняю :) ... Мне надо подписаться на события других модулей например. А для этого мне также при старте приложения надо запустить свой компонент, который все подписки оформит. Просто в этом случае мне понадобилось внести правки в конфиг, но решение поставленной задачи в принципе решает очень много вопросов. Из-за чего свой способ я считаю костыльным - потому что он без разбора прогрузит все компоненты объявленные в системе. Во избежание этого можно было бы такие "автозагружаемые" компоненты унаследовать от отдельного класса со свойством autoLoad и перед загрузкой компонентов проверять значится ли в их конфиге это свойство. Но и это мне кажется не лучшим решением, потому что разработка усложняется неоправданно сильно (лишние правила по наследованию). Надеялся что в yii уже есть настройка, позволяющая отключить lazy-load для некого компонента, и я просто не могу её найти. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2017, 12:27 |
|
yii2 форсированная загрузка компонентов
|
|||
---|---|---|---|
#18+
авторИз-за чего свой способ я считаю костыльным - потому что он без разбора прогрузит все компоненты объявленные в системе. Костылем он является потому, что заменяет класс User =) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2017, 12:43 |
|
yii2 форсированная загрузка компонентов
|
|||
---|---|---|---|
#18+
В чем проблема навесить ивенты на нужные модели? http://www.yiiframework.com/doc-2.0/guide-concept-events.html ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2017, 12:45 |
|
yii2 форсированная загрузка компонентов
|
|||
---|---|---|---|
#18+
HettавторИз-за чего свой способ я считаю костыльным - потому что он без разбора прогрузит все компоненты объявленные в системе. Костылем он является потому, что заменяет класс User =) Ну не... костылём оно становится не из-за этого. User - это класс, которые реализует IdentityInterface. Соответственно вполне логично, что модуль "users" подменяет этот класс на свой, потому как именно он поставляет нужные модели для работы с пользователями Hett, при всём уважении к тебе, я считаю что ты просто не вник в саму суть вопроса. А насчёт ивэнтов... Я так понимаю это ответ на "Мне надо подписаться на события других модулей например"... Так я не совсем понимаю каким образом ответ связан с вопросом. :)) Подписку то кто-то оформить должен. Я же не могу перехватить событие, если не был на него ранее подписан. Или это предложение, что модели одного модуля могли бы сами подписаться на события моделей другого модуля? Если да, то это неприемлемо, потому что по задумке модули должны связываться в одной точке (через один интерфейс)... Иначе если понадобится что-то от чего-то отвязать, это вызовет уйму проблем и часы поиска по всему модулю на факт наличия каких либо остаточных связей. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2017, 14:35 |
|
yii2 форсированная загрузка компонентов
|
|||
---|---|---|---|
#18+
а почему компонент лезет в конфиг приложения, пуст приложение берет конфиг компонента и вмерживает его в свой при инициализации. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2017, 14:54 |
|
yii2 форсированная загрузка компонентов
|
|||
---|---|---|---|
#18+
Да это я уже про замену класса. В Yii1 была опция prelaod. https://github.com/yiisoft/yii2/blob/master/docs/guide/structure-applications.md#yiibaseapplicationbootstrapbootstrap- bootstrap - оно? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2017, 14:56 |
|
yii2 форсированная загрузка компонентов
|
|||
---|---|---|---|
#18+
SharuPoNemnoguа почему компонент лезет в конфиг приложения, пуст приложение берет конфиг компонента и вмерживает его в свой при инициализации. А разница? :) Результат будет тем же... Но только расширяемость подхода будет ниже... Потому что есть то, что невозможно реализовать через изменения конфига, а потому в любом случае в итоге понадобится метод, который сможет завершить начатое :) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2017, 17:14 |
|
yii2 форсированная загрузка компонентов
|
|||
---|---|---|---|
#18+
HettДа это я уже про замену класса. В Yii1 была опция prelaod. https://github.com/yiisoft/yii2/blob/master/docs/guide/structure-applications.md#yiibaseapplicationbootstrapbootstrap- bootstrap - оно? Во... вот это похоже оно. Немного позже (сегодня) попробую и отпишусь сюда. Спасибо :) P.S. Про bootstrap мне ещё MikkiMouse писал, но там как-то хитро было всё завёрнуто через composer.json (ну то есть туда как-то композер ещё притянули)... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2017, 17:19 |
|
|
start [/forum/topic.php?fid=23&msg=39390953&tid=1460785]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
56ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 160ms |
0 / 0 |