Автоматическое подключение обработчиков событий (D7-style)

Рейтинг: 6.5302  
На голосовании
Предложил Пользователь 109495 29.01.2015 09:05:26

Автоматическое подключение обработчиков событий (D7-style)

У нас в веб-студии есть определененный стандарт: все обработчики хранятся в модулях в папке lib/eventhandlers/<код модуля, чье событие обрабатывается>.php
Внутри - класс с методами, чьи имена совпадают с названиями событий. Т.е. для события onBeforeUserLogin модуля main обработчик будет такой:
\Intervolga\Diving\EventHandlers\Main :: onBeforeUserLogin

Ситуацию усложняет только необходимость подключения этих обработчиков в include.php файле модуля.

Ничего не напоминает? Когда-то у нас была куча include'ов обычных классов и появился спситель - автозагрузчик D7. Может, сделаете аналогичную автозагрузку обработчиков событий?

Рейтинг: 0.457  
Пользователь 203730 29.01.2015 09:46:35
А зачем подключать в include.php модуля? Есть же не runtime-регистрация при установке...
Рейтинг: 0.2591  
Пользователь 109495 29.01.2015 09:59:52
Спору нет, при установке и через БД, разумеется, лучше. Логика остается такой же. Но когда идет активная работа над проектом - удалять-устанавливать модуль постоянно малость напрягает. Поэтому подключаем именно в include.php
Рейтинг: 1  
Пользователь 76521 23.11.2015 11:10:42
Есть модуль
https://github.com/maximaster/tools


В его составе есть функционал, который решает данную проблему, правда хранение обработчиков организовано несколько иначе