| Профиль | Блог (3) | Комментарии (5) | Закладки | Продукты |
Пытаюсь разобраться с принципами работы хуков, но прочитав документацию столкнулся с некоторыми трудностями.
Допустим есть шестерни gear1 c моделью model1, методом которой является method1 и gear2 с моделью model2 и ее методом method2
1. Чтобы получить результаты выполнения method1 в шестерне gear2 где я должен расположить хук, /gears/gear1/_hooks.php или в /gears/gear2/_hooks.php?
2. Как должен называться этот хук?
Допустим есть шестерни gear1 c моделью model1, методом которой является method1 и gear2 с моделью model2 и ее методом method2
1. Чтобы получить результаты выполнения method1 в шестерне gear2 где я должен расположить хук, /gears/gear1/_hooks.php или в /gears/gear2/_hooks.php?
2. Как должен называться этот хук?


Смотрите, вы можете получать доступ к любым моделям любых шестеренок через любые хуки.
Например, вы можете в одной шестеренке хукнуть свою же модель.
Чтобы хуки работали на определенные методы моделей, то название метода должно начинаться с_, а в реале вызываться без него.
Помните, что имена у всех моделей должны быть уникальными.
/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(); } …Таким образом название функции хука можно разбить на следующие составляющие: