codeigniter
Использование крючков
Поиск…
Включение крючков
Функция 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
-Дополнительный параметр, если необходимо, является необязательным