Введение в плагины Joomla, принцип работы
|
|
В Joomla реализована очень мощная и гибкая система для обработки
событий. Придерживаясь идеологии эффективного ООП реализована "система
наблюдения (прослушивания)", которая реагирует на зарегистрированные
события и выполняет какие либо функции. Проще говоря - они позволяют
писать собственные расширения ядра Joomla, без его модификаций.
Реализация
Система событий базируется на двух классах
- JPlugin - наблюдаемый класс.
- JEventDispather - класс- наблюдатель.
class JPlugin extends JObserver |
function JPlugin(& $subject) |
parent::__construct($subject); |
function update( &$args ) |
if (method_exists($this, $event)) { |
return call_user_func_array(array($this, $event), $args); |
Этот класс делает две очень важные вещи.
Первое - это конструктор класса, который создаст экземпляр родительского класса JObserver. Вот что происходить в нем:
$this->_subject = &$subject; |
Вторая важная вещь - это метод update. Метод получает массив из
триггера, который содержит в себе два элемента - название события и
список аргументов. После того как был вызван update, информация о
названии события извлекается в отдельную переменную и удаляется, далее
вызывается метод "event", в который передаются все параметры. В итоге
Update - это ответ из self::$event($args);
Пример стороннего плагина
jimport('joomla.plugin'); |
class ExamplePlugin extends JPlugin |
function ExamplePlugin( &$subject ) { |
parent::__construct( $subject ); |
function onIncrement($input) |
Как
видно, плагин сделать очень просто - достаточно правильно расширить
класс JPlugin и описать обработку событий в виде методов.
|