Spec-Zone.ru › CodeIgniter 3

Плагины — расширение ядра фреймворка

Функция плагинов CodeIgniter предоставляет способ подключения и изменения внутренней работы фреймворка без вмешательства в основные файлы. При запуске CodeIgniter он следует определённому процессу выполнения, схематически представленному на странице Поток приложения. Однако могут возникнуть ситуации, когда вам нужно выполнить какое-то действие на определённом этапе процесса выполнения. Например, вы можете захотеть запустить скрипт непосредственно перед загрузкой контроллеров или сразу после неё, или вызвать один из собственных скриптов в другом месте.

Включение плагинов

Функция плагинов может быть глобально включена/выключена путём задания следующего элемента в файле application/config/config.php:

$config['enable_hooks'] = TRUE;

Определение плагина

Плагины определяются в файле application/config/hooks.php. Каждый плагин определяется как массив с этим прототипом:

$hook['pre_controller'] = array(
        'class'    => 'MyClass',
        'function' => 'Myfunction',
        'filename' => 'Myclass.php',
        'filepath' => 'hooks',
        'params'   => array('beer', 'wine', 'snacks')
);

Примечания:

Индекс массива соответствует имени конкретной точки подключения, которую вы хотите использовать. В приведенном выше примере точкой подключения является pre_controller. Список точек подключения приведен ниже. В вашем ассоциативном массиве плагинов должны быть определены следующие элементы:

  • class Имя класса, который вы хотите вызвать. Если вы предпочитаете использовать процедурную функцию вместо класса, оставьте этот элемент пустым.
  • function Имя функции (или метода), который вы хотите вызвать.
  • filename Имя файла, содержащего ваш класс/функцию.
  • filepath Имя каталога, содержащего ваш скрипт. Обратите внимание: ваш скрипт должен находиться в каталоге ВНУТРИ каталога application/, поэтому путь к файлу является относительным по отношению к этому каталогу. Например, если ваш скрипт находится в application/hooks/, вы просто используете ‘hooks’ в качестве пути к файлу. Если ваш скрипт находится в application/hooks/utilities/, вы используете ‘hooks/utilities’ в качестве пути к файлу. Без конечного слэша.
  • params Любые параметры, которые вы хотите передать своему скрипту. Этот элемент является необязательным.

Вы также можете использовать лямбда-функции (или анонимные функции) в качестве плагинов с более простым синтаксисом:

$hook['post_controller'] = function()
{
        /* do something here */
};

Несколько вызовов одного и того же плагина

Если вы хотите использовать одну и ту же точку подключения с более чем одним скриптом, просто сделайте объявление массива многомерным, как это:

$hook['pre_controller'][] = array(
        'class'    => 'MyClass',
        'function' => 'MyMethod',
        'filename' => 'Myclass.php',
        'filepath' => 'hooks',
        'params'   => array('beer', 'wine', 'snacks')
);

$hook['pre_controller'][] = array(
        'class'    => 'MyOtherClass',
        'function' => 'MyOtherMethod',
        'filename' => 'Myotherclass.php',
        'filepath' => 'hooks',
        'params'   => array('red', 'yellow', 'blue')
);

Обратите внимание на скобки после каждого индекса массива:

$hook['pre_controller'][]

Это позволяет вам использовать одну и ту же точку подключения с несколькими скриптами. Порядок определения вашего массива будет порядком выполнения.

Точки подключения

Ниже приведён список доступных точек подключения.

  • pre_system Вызывается очень рано во время выполнения системы. В этот момент загружены только класс benchmark и класс плагинов. Маршрутизация и другие процессы ещё не выполнены.
  • pre_controller Вызывается непосредственно перед вызовом любого из ваших контроллеров. Все базовые классы, маршрутизация и проверки безопасности выполнены.
  • post_controller_constructor Вызывается сразу после создания вашего контроллера, но до выполнения любых методов.
  • post_controller Вызывается сразу после полного выполнения вашего контроллера.
  • display_override Переопределяет метод _display(), используемый для отправки окончательной страницы веб-браузеру в конце выполнения системы. Это позволяет вам использовать собственную методологию отображения. Обратите внимание, что вам необходимо сделать ссылку на суперобъект CI с помощью $this->CI =& get_instance(), а затем окончательные данные будут доступны, вызвав $this->CI->output->get_output().
  • cache_override Позволяет вызвать свой собственный метод вместо метода _display_cache() в Библиотеке вывода. Это позволяет использовать собственную механику отображения кэша.
  • post_system Вызывается после отправки окончательной отрендеренной страницы в браузер в конце выполнения системы после отправки окончательных данных в браузер.

© 2014–2020 British Columbia Institute of Technology
Licensed under the MIT License.
https://codeigniter.com/userguide3/general/hooks.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API