Где объявлена функция Hook_Run() ?

Вызов этой функции есть в коде «акшинов» и модулей, но объявление я не нашел нигде. Где файл, в котором объявлена функция Hook_Run()?

7 комментариев

avatar
Если не ошибаюсь модуль Hook
avatar
там я, конечно, посмотрел в первую очередь, но там его НЕТ: в файле engine\classes\Hook.class.php объявлен абстрактный класс Hook. Но в нем объявлены только методы AddHook, AddDelegateHook, RegisterHook, __call, __construct. Hook — наследник Object, но в Object нет ни Hook_Run ни чего-либо еще.
avatar
там я, конечно, посмотрел в первую очередь, но там его НЕТ: в файле engine\classes\Hook.class.php объявлен абстрактный класс Hook
что нам говорит это в engine\classes\Hook.class.php?
public function __call($sName,$aArgs) {
return Engine::getInstance()->_CallModule($sName,$aArgs);
}
вам наверное ничего не говорит, тогда я покажу вам в engine/modules/hook/Hook.class.php вот что на 80 строке:
public function Run($sName,&$aVars=array()) {
хорошо искали?
avatar
Еще труднее понять то, что в классе Router (engine\classes\Router.class.php) этот метод вызывается как $this->Hook_Run, что как бы намекает нам, на то что Hook_Run должен быть объявлен либо в этом классе, либо в родительском. Однако в Router такого метода нет, а родительский класс — Object, в котором тоже ничего нет.
И где Hook_Run?
avatar
вам нужно поучить структуру ЛС.
вы правы с точки зрения ООП, но не совсем в понятии структуры ЛС.
avatar
А на что нам как бы намекает магическая функция __call определенная в родительском классе :)?
avatar
Теперь все стало ясно. Спасибо PSNet и stfalcon, вы открыли мне глаза. Надо было внимательнее отнестись к фичам PHP5.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.