Hooks OSC\OM\Hooks

Введение

Hooks позволяют вызывать действие, которые будут выброшены во время события, чтобы выполнить дополнительную функциональность. Хуки не являются модулями в традиционном понимании этого слова. Будучи установленными и настроеннными, они просто модульные функции, ожидающие исполнения, по требованию, без настройки или администрирования вообще. По соображениям безопасности, хуки должны быть определены в их файле метаданных Apps. В противном случае они не будут доступны для использования. Крючки инициализированы путем создания экземпляра OSC\OM\Hooks и с указанием Site, чтобы вызвать действие хука. Если Site не подходит, Site инициализируется структурой и используется по умолчанию.

use OSC\OM\Hooks;
$OSCOM_Hooks = new Hooks();

Hooks() автоматически инициализируются на каждом запросе страницы и доступен в Registry.

Событие Callout

Выбрасывая выноски, событие выполняется путем указания спицефической группы, принадлежащего события, и имя актуального события, опционально, определенную функцию для выполнения. Есть два типы выноски, которые могут быть выполнены:

Тип Описание
call() Выполняет хуки и может возвращать массив результатов в зависимости от события.
output () Выполняет хуки и возвращает результат в виде строки.

Hooks::call()

// no output expected
$OSCOM_Hooks­>call('Account' , 'Logout' );

Параметры

 Hooks::call($group, $hook, $parameters, $action) 

Параметр Значение
$group Группа вызвающего события.
$hook Имя вызывающего события
$parameters Любые параметры подходящие хукам
$action Имя функции хука для выполнения. По умолчанию: execute

Hooks::output()

// concatenated string output of all hooks executed
echo $OSCOM_Hooks­>output('Orders' , 'Page' , null, 'display' )

Параметры

 Hooks::output($group, $hook, $parameters, $action) 

Метод output() разделяет те же параметры функции метода класса call().

Список выноски события хука доступен на странице списка Hook Callouts.

Время выполнения

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

use OSC\OM\Registry;
$OSCOM_Hooks = Registry:: get('Hooks' );
$OSCOM_Hooks­>watch('Session' , 'Recreated' , 'execute' , function($parameters
) {
....
});