На самописном движке хочу реализовать хуки, для удобств расширения функционала с помощью модулей. Надумал пока вот что:
Каждый модуль оформляется в виде php файла с классом, методы этого класса - реализация хуков вида :
1. iflight - 08 Августа, 2011 - 03:42:59 - перейти к сообщению
Запуск хука происходит так ($this->modules - сисок всех установленных модулей):
PHP:
скопировать код в буфер обмена
скопировать код в буфер обмена
- function after_new_material_save($material){
- foreach($this->modules as $mod_name){
- $mod_path = '/modules/'.$mod_name.'/'.$mod_name.'.php';
- include_once($mod_path);
- $mod = new $mod_name;
- $method = $mod_name."_after_new_material_save";
- $mod->$method($material);
- }
- }
- }
- }
а в "ядре" движка функции hookname() запускаются в нужных местах. (например after_new_material_save($material) сразу после сохранения материала).
Но с таким подходом в итоге можно получить огромное количество инклудов, что не есть хорошо. Как более рационально можно подобное организовать? мб подкинте ссылок, хотя бы на английском, ничего толкового найти не могу.