Hook

Материал из PHPShop

Перейти к: навигация, поиск

Хук (Hook) - это PHP функция, которая перехватывает на себя выполнение заводских функций PHPShop API, дающая возможность "на лету" перехватывать данные и видоизменять их вывод, добавлять новые возможности, управлять настройками API.

Содержание

Позиционировании активации в функции

Возможностью использования хука обладают 90% функций PHPShop. В таких функциях (методы классов) предусмотрено до 3 режимов включение хука (START, MIDDLE и END).

Хук может быть активирован

  • В начале функции - для активации использовать параметр роутера хука START
  • В середине функции - для активации использовать параметр роутера хука MIDDLE
  • В конце функции - для активации использовать параметр роутера хука END

Для определения размерности роутера смотрите справочную информацию по функциям. Использование роутера хука позволяет более точно подсоединяться к функциям и экономить ресурсы проекта на исключении повторяющихся элементах кода и зеркальных запросах к БД.

Использование роутера

Роутер позволяет координировать место активации хука. Чтобы не переписывать весь код функции для перехвата выборки из БД используется роутер MIDDLE, для полного перехвата функции в самом начале и отключение параллельного выполнения перехватываемой функции используется роутер START. Для модернизации результата итогового выполнения функции используется роутер END.

Пример использования роутера

 
/**
 * Изменение сетки сопутствующих товаров, сетка товаров = 3
 */
function odnotip_hook($obj,$row,$rout) {
    if($rout=='START') {
        $obj->odnotip_setka_num=3;
        $obj->line=true;
    }
}

Прерывание функции

Для полного перехвата дальнейшего выполнения функции, в самой функции должно быть условие прерывания (см. описание функций) и хук должен выдавать булевого значение true результатом выполнения.

 
/**
 * Изменение сетки сопутствующих товаров, сетка товаров = 3
 */
function odnotip_hook($obj,$row,$rout) {
    if($rout=='START') {
        $obj->odnotip_setka_num=3;
        $obj->line=true;
    return true;
    }
}

Сравнение

Сводная таблица сравнения возможностей Design Hook,1C Hook и Hook.

Hook

  1. Перехват функций API внешней части
  2. Перехват функций API административной части
  3. Поддержка режима инсталляции (включение/выключение)
  4. Поддержка персональной БД для настроек
  5. Защита от изменений при обновлении при условии уникальности имени модуля
  6. Размещение в /phpshop/modules/имя модуля

Design Hook

  1. Перехват функций API внешней части
  2. Автоматическая активация
  3. Защита от изменений при обновлении
  4. Размещение в /phpshop/templates/имя шаблона/php

1C Hook

  1. Перехват функции 1С-Синхронизации
  2. Поддержка режима инсталляции (включение/выключение
  3. Размещение в /1cManager/hook

Создание Hook

Создать новый хук можно через дополнительный модуль,Design Hook или 1C Hook.

Реализации

Источник — «http://wiki.phpshop.ru/index.php/Hook»