Динамическая загрузка модулей
Динамическая загрузка модулей
Добрый день! Подскажите, как можно реализовать динамическую загрузку модулей не используя конфигурационный файл приложения (config.php)?
У меня есть компонент, который определяет интерфейс BootstrapInterface, как можно в методе bootstrap() загрузить модули?
У меня есть компонент, который определяет интерфейс BootstrapInterface, как можно в методе bootstrap() загрузить модули?
Re: Динамическая загрузка модулей
Задачу решил, модуль подключается методом 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);
...
Re: Динамическая загрузка модулей
Не проще ли просто в тех модулях которые нужно автоматом подключить реализовать BootstrapInterface тоже?
Re: Динамическая загрузка модулей
Или я неправильно понял?Carcade писал(а):Подскажите, как можно реализовать динамическую загрузку модулей не используя конфигурационный файл приложения (config.php)?
Re: Динамическая загрузка модулей
прошу прощения, не внимательно прочитал вопрос.
Re: Динамическая загрузка модулей
а зачем вам это понадобилось?
Re: Динамическая загрузка модулей
Понемногу разрабатываю модульную CMS под себя. Реализация динамической загрузки модулей понадобилась вот для чего: дистрибутив модуля копируется в папку с модулями, система автоматически определяет его - а дальше администратор включает/выключает модуль через админ панель. Без динамической загрузки модулей, пришлось бы прописывать модули в файле настроек системы.
Re: Динамическая загрузка модулей
так вам надо не динамически загружать модули, а динамически их добавлять в Yii::$app->modules, чтобы сохранилась ленивая загрузка. А сейчас вы таким образом создаете на каждый модуль объект, возможно тяжелый.Carcade писал(а):Понемногу разрабатываю модульную CMS под себя. Реализация динамической загрузки модулей понадобилась вот для чего: дистрибутив модуля копируется в папку с модулями, система автоматически определяет его - а дальше администратор включает/выключает модуль через админ панель. Без динамической загрузки модулей, пришлось бы прописывать модули в файле настроек системы.
Re: Динамическая загрузка модулей
Покажите пример?zelenin писал(а):динамически их добавлять в Yii::$app->modulesCarcade писал(а):Понемногу разрабатываю модульную CMS под себя. Реализация динамической загрузки модулей понадобилась вот для чего: дистрибутив модуля копируется в папку с модулями, система автоматически определяет его - а дальше администратор включает/выключает модуль через админ панель. Без динамической загрузки модулей, пришлось бы прописывать модули в файле настроек системы.
Если не ошибаюсь - setModule не загружает модуль, а только "информирует" yii о наличии его. Фактически загружает - getModule. В общем это можно проверить, сначала добавив модуль setModule, а потом запустить getInstance - если выдаст null - значит модуль не загружается.
Re: Динамическая загрузка модулей
ну да, все верно.
Re: Динамическая загрузка модулей
Спасибо за ответы, не знал, что можно подключать модули без объявления их в конфигурационном файле, теперь подключение модуля выглядит совсем красиво =)