Powered by CodeIgniter
artem-kovardin

artem-kovardin

0
0 голосов
  ПрофильБлог (3)Комментарии (5)ЗакладкиПродукты 
Пытаюсь разобраться с принципами работы хуков, но прочитав документацию столкнулся с некоторыми трудностями.
Допустим есть шестерни gear1 c моделью model1, методом которой является method1 и gear2 с моделью model2 и ее методом method2

1. Чтобы получить результаты выполнения method1 в шестерне gear2 где я должен расположить хук, /gears/gear1/_hooks.php или в /gears/gear2/_hooks.php?
2. Как должен называться этот хук?
13:52 ← 26 марта 2010 Отправить в Твиттер artem-kovardinartem-kovardin  RSS comments 3

Комментарии (3) ↓

admin admin time 14:18 ← 26 марта 2010 #
Приветствую.
Смотрите, вы можете получать доступ к любым моделям любых шестеренок через любые хуки.
Например, вы можете в одной шестеренке хукнуть свою же модель.
Чтобы хуки работали на определенные методы моделей, то название метода должно начинаться с_, а в реале вызываться без него.
Помните, что имена у всех моделей должны быть уникальными.
/gears/test/models/test.php:
//Пример class Test{ … function _action($a,$b){ … } … } // Вызываем без _ — вот тут и происходит магия. $this->test->action(); Теперь вы можете в любой шестеренке создать хук этого метода. Допустим, шестеренка называется my_gear.
/gears/my_gear/_hooks.php:
… // Если хук идет перед методом function my_gear_test_action_($Test,$a,$b){ … } … // Если хук идет после метода и оперирует его результатом function my_gear_test_action_after_($Test,$result,$a,$b){ … // Если хотите отправить исправленный результат в другие хуки return func_get_args(); } … Таким образом название функции хука можно разбить на следующие составляющие:
  • my_gear — название исходной шестеренки
  • test — название адресуемой модели (имена всех моделей уникальны)
  • action — название адресуемого метода
  • [after] — возможность отработать хук после выполнения метода, изменив его результат
  • _ — нижнее подчеркивание указывает, что мы хукаем модель, а не контроллер.
Автор
artem-kovardin artem-kovardin time 14:30 ← 26 марта 2010 #
Спасибо.
admin admin time 16:01 ← 26 марта 2010 #
Пожалуйста.