Плагины
Плагины в SyDES используются для изменения данных во время работы модулей, а так же для добавления дополнительных действий, без вмешательства в код самих модулей. Например, с их помошью можно реализовать обработку шорткодов в тексте страниц или добавить отправку смс при заполнении определенной формы.
Каждый плагин или набор плагинов, объединенных общей задачей, должны быть в отдельном php файле с любым названием в папке system/plugin.
Код инициализации плагина достаточно простой
<?php $app->on('event', 'routes', function() use ($app){ // сделать что-нибудь }, 0);
Где
- event - определенное событие в приложении
- routes - ограничитель влияния по роутам
- $app - приложение
- 0 - приоритет выполнения, не обязательный
События
На данный момент в SyDES существуют всего 3 события
- after.bootstrap - после того, как система собрала все данные, настроила окружение и подключила обязательные библиотеки
- before.module - перед запуском модуля
- after.module - после того, как модуль отработал и сохранил в реестре данные
Так же, при создании своих модулей, можно зарегистрировать еще событий.
$app->trigger('myevent', array('question?', '42'));
Где
- myevent - уникальный ключ для события. Может содержать и название модуля и название события, вроде before.myevent.mymodule
- array - необязательный массив данных, которые могут понадобиться для работы плагина.
В случае если передается массив, то в коде плагина можно будет использовать, дополнив function() переменными, которые заполнятся в порядке очередности
$app->on('myevent', 'question/*', function($q, $a) use ($app){ $app->request->get['answer'] = $q . ' ' . $a . ' is answer'; });
Роуты
Можно указывать как полные пути, так и с поддержкой вилдкардов.
Примеры:
- * - любой запрос к приложению
- pages/* - любой экшен модуля страниц
- */save - сохранение любого модуля
- pages/view/42 - просмотр страницы с id = 42
- constructors/form/send - заполнение формы в конструкторах
Приложение
Переменная $app
содержит в себе реестр и некоторые методы ядра
Приоритет
Если не указывать приоритет, то он будет равен 0 и такие плагины будут запускаться в порядке их обнаружения системой.
Если плагин возвращает false, то все последующие, зарегистрированные на текущее событие, выполняться не будут.