Динамическая загрузка модулей

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Carcade
Сообщения: 6
Зарегистрирован: 2015.03.09, 13:16

Динамическая загрузка модулей

Сообщение Carcade »

Добрый день! Подскажите, как можно реализовать динамическую загрузку модулей не используя конфигурационный файл приложения (config.php)?
У меня есть компонент, который определяет интерфейс BootstrapInterface, как можно в методе bootstrap() загрузить модули?
Carcade
Сообщения: 6
Зарегистрирован: 2015.03.09, 13:16

Re: Динамическая загрузка модулей

Сообщение Carcade »

Задачу решил, модуль подключается методом setModule, далее - если подключаемый модуль определяет интерфейс BootstrapInterface, нужно вызвать метод bootstrap().

Код: Выделить всё

class ModuleManager extends Component implements BootstrapInterface
{
    public function bootstrap($app)
    {
        ...
        Yii::$app->setModule('node', [
           'class' => 'app\modules\node\Node',
        ]);
        Yii::$app->getModule('news')->bootstrap(Yii::$app);
        ...
padlyuck
Сообщения: 302
Зарегистрирован: 2015.02.03, 09:50

Re: Динамическая загрузка модулей

Сообщение padlyuck »

Не проще ли просто в тех модулях которые нужно автоматом подключить реализовать BootstrapInterface тоже?
Carcade
Сообщения: 6
Зарегистрирован: 2015.03.09, 13:16

Re: Динамическая загрузка модулей

Сообщение Carcade »

Carcade писал(а):Подскажите, как можно реализовать динамическую загрузку модулей не используя конфигурационный файл приложения (config.php)?
Или я неправильно понял?
padlyuck
Сообщения: 302
Зарегистрирован: 2015.02.03, 09:50

Re: Динамическая загрузка модулей

Сообщение padlyuck »

прошу прощения, не внимательно прочитал вопрос.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Динамическая загрузка модулей

Сообщение zelenin »

а зачем вам это понадобилось?
Carcade
Сообщения: 6
Зарегистрирован: 2015.03.09, 13:16

Re: Динамическая загрузка модулей

Сообщение Carcade »

Понемногу разрабатываю модульную CMS под себя. Реализация динамической загрузки модулей понадобилась вот для чего: дистрибутив модуля копируется в папку с модулями, система автоматически определяет его - а дальше администратор включает/выключает модуль через админ панель. Без динамической загрузки модулей, пришлось бы прописывать модули в файле настроек системы.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Динамическая загрузка модулей

Сообщение zelenin »

Carcade писал(а):Понемногу разрабатываю модульную CMS под себя. Реализация динамической загрузки модулей понадобилась вот для чего: дистрибутив модуля копируется в папку с модулями, система автоматически определяет его - а дальше администратор включает/выключает модуль через админ панель. Без динамической загрузки модулей, пришлось бы прописывать модули в файле настроек системы.
так вам надо не динамически загружать модули, а динамически их добавлять в Yii::$app->modules, чтобы сохранилась ленивая загрузка. А сейчас вы таким образом создаете на каждый модуль объект, возможно тяжелый.
Carcade
Сообщения: 6
Зарегистрирован: 2015.03.09, 13:16

Re: Динамическая загрузка модулей

Сообщение Carcade »

zelenin писал(а):
Carcade писал(а):Понемногу разрабатываю модульную CMS под себя. Реализация динамической загрузки модулей понадобилась вот для чего: дистрибутив модуля копируется в папку с модулями, система автоматически определяет его - а дальше администратор включает/выключает модуль через админ панель. Без динамической загрузки модулей, пришлось бы прописывать модули в файле настроек системы.
динамически их добавлять в Yii::$app->modules
Покажите пример?

Если не ошибаюсь - setModule не загружает модуль, а только "информирует" yii о наличии его. Фактически загружает - getModule. В общем это можно проверить, сначала добавив модуль setModule, а потом запустить getInstance - если выдаст null - значит модуль не загружается.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Динамическая загрузка модулей

Сообщение zelenin »

ну да, все верно.
sanex3339
Сообщения: 66
Зарегистрирован: 2014.10.16, 20:30

Re: Динамическая загрузка модулей

Сообщение sanex3339 »

Спасибо за ответы, не знал, что можно подключать модули без объявления их в конфигурационном файле, теперь подключение модуля выглядит совсем красиво =)
Ответить