Вызов хука
Помимо стандартных способов работы с хуками существует возможность бросить «ловушку» для вызова хука.
/**
* Функция базового контроллера, отвечающая за вызов хука.
*
* @param string $class Класс.
* @param string $method Метод.
* @param string $class Суффикс.
* @param array $args Аргументы.
* @return void
*
*/
function _hook($class,$method,$suffix,$args){
...
}
// ------------------------------------------------------------------------
/*
* Пример.
* В любом месте любого контроллера бросаем "ловушку".
*/
...
$this->_hook("hkclass","hkmethod","hksuffix",array($data));
...
/**
* Вызовем хук из компонента mail.
* /gears/mail/_hooks.php
*
* @param object $CI Сущность движка.
* @param mixed $data Входные данные.
* ...
* @return void
*/
function mail_hkclass_hkmethod_hksuffix($CI,$data){
...
}
// ------------------------------------------------------------------------
/*
* Пример.
* Изменим параметр, передаваемый хуку.
* В любом месте любого контроллера бросаем ловушку.
*/
...
$data = $this->_hook("hkclass","hkmethod","hksuffix",array($data));
...
/**
* Вызовем хук из компонента mail.
* Вернем измененный параметр.
* /gears/mail/_hooks.php
*
* @param object $CI Сущность движка.
* @param mixed $data Входные данные.
* ...
* @return void
*/
function mail_hkclass_hkmethod_hksuffix($CI,$data){
...
return $data;
}
// ------------------------------------------------------------------------
С ловушками в моделях все аналогично. Только не забывайте "_" на конце названия функции хука, чтобы указать принадлежность хука к «модельным».