Поиск…


Включение крючков

Функция hooks может быть включена / отключена глобально, установив следующий элемент в файле 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 Имя файла, содержащего ваш класс / функцию.

file-path Имя каталога, содержащего ваш скрипт.

params Все параметры, которые вы хотите передать в свой скрипт. Этот элемент не является обязательным.

Очки крючка

pre_system

Вызывается очень рано во время выполнения системы. На данный момент загружен только класс тестов и крючков. Произошло никаких маршрутов или других процессов.

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

Вызывается после того, как окончательная отображаемая страница будет отправлена ​​в браузер, в конце выполнения системы после отправки окончательных данных в браузер.

Пример использования контрольного крючка с использованием CodeIgniter

В папке application/hooks создайте файл с именем Blocker.php и вставьте код ниже.

<?php
class Blocker {

    function Blocker(){
    }
    
    /**
     * This function used to block the every request except allowed ip address
     */
    function requestBlocker(){
        
        if($_SERVER["REMOTE_ADDR"] != "49.248.51.230"){
            echo "not allowed";
            die;
        }
    }
}
?>

В application/config/hooks.php объявите следующий крючок.

$hook['pre_controller'] = array(
        'class'    => 'Blocker',
        'function' => 'requestBlocker',
        'filename' => 'Blocker.php',
        'filepath' => 'hooks',
        'params'   => ""
);

В application/config/config.php задайте следующее значение как true

Определение крюка

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

$hook['pre_controller'] = array(
      'class'    => 'MyClass',
      'function' => 'Myfunction',
      'filename' => 'Myclass.php',
      'filepath' => 'hooks',
      'params'   => array('bread', 'wine', 'butter')
);
  • CLASS - класс, который вы хотите вызвать, если он является процедурным кодом, оставляет его пустым.
  • FUNCTION - имя функции, которую вы хотите вызвать.
  • FILENAME - имя файла, содержащего ваш класс / функцию.
  • FILEPATH - расположение файла-крючка.
  • PARAMS -Дополнительный параметр, если необходимо, является необязательным


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow