Плагины

Плагины в 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, то все последующие, зарегистрированные на текущее событие, выполняться не будут.




Если вы хотите что-то узнать дополнительно - спрашивайте в комментариях. Документация будет дополняться по вашим вопросам.
© Arthur Grand, 2011–2018
Powered by SyDES