Загрузка плагина

Чтобы загрузить ваш плагин начиная с Elgg 3.0, вы можете использовать класс загрузки. Этот класс должен реализовывать интерфейс \Elgg\PluginBootstrapInterface, но рекомендуется расширять абстрактный класс \Elgg\PluginBootstrap, так как некоторые приготовления уже сделаны.

Если вам нужен только ограниченный набор функций загрузки, ваш класс также может расширять класс \Elgg\DefaultPluginBootstrap, этот класс уже имеет все функции \Elgg\PluginBootstrapInterface, реализованные. Таким образом, вы можете переопределить только нужные вам функции.

Регистрация класса загрузки

Вы должны зарегистрировать ваш класс загрузки в файле elgg-plugin.php.

return [
        // Bootstrap must implement \Elgg\PluginBootstrapInterface
        'bootstrap' => MyPluginBootstrap::class,
];

Доступные функции

->load()

Выполняется во время события plugins_load, system

Позволяет плагину требовать дополнительные файлы, а также настраивать сервисы перед загрузкой плагина.

->boot()

Выполняется во время события plugins_boot:before, system

Позволяет плагину регистрировать обработчики для событий plugins_boot, system и init, system, а также реализовывать логику времени загрузки.

->init()

Выполняется во время события init, system

Позволяет плагину реализовывать бизнес-логику и регистрировать все остальные обработчики.

->ready()

Выполняется во время события ready, system

Позволяет плагину реализовывать логику после инициализации всех плагинов.

->shutdown()

Выполняется во время события shutdown, system

Позволяет плагину реализовывать логику во время завершения работы.

->activate()

Выполняется при активации плагина, после события activate, plugin.

->deactivate()

Выполняется при деактивации плагина, после события deactivate, plugin.

->upgrade()

Зарегистрирован как обработчик для события upgrade, system

Позволяет плагину реализовывать логику во время обновления системы.

Доступные вспомогательные функции

Это предполагает, что ваш класс загрузки расширяет абстрактный класс \Elgg\PluginBootstrap или класс \Elgg\DefaultPluginBootstrap.

->elgg()

Возвращает публичный контейнер внедрения зависимостей Elgg. Это может быть полезно, если вы хотите зарегистрировать слушатели событий.

$events = $this->elgg()->events;
$events->registerHandler('create:after', 'object', MyCustomObjectHandler::class);

->plugin()

Возвращает сущность плагина, к которой относится эта загрузка. Это упрощает получение настроек плагина.

$plugin = $this->plugin();
$my_setting = $plugin->getSetting('my_setting');