Download the PHP package technique102/bitrix-events-attributes without Composer
On this page you can find all versions of the php package technique102/bitrix-events-attributes. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download technique102/bitrix-events-attributes
More information about technique102/bitrix-events-attributes
Files in technique102/bitrix-events-attributes
Package bitrix-events-attributes
Short Description Use the php8 attribute in Bitrix for event handlers
License MIT
Homepage https://github.com/Technique102/bitrix-events-attributes
Informations about the package bitrix-events-attributes
Регистрация обработчиков событий через атрибуты php8 (1С-Битрикс)
Пакет поможет избавиться от классической ситуации при разработке на 1С-Битрикс, когда есть файл events.php который подключается в init.php и в котором большое количество вызовов \Bitrix\Main\EventManager::getInstance()->addEventHandler().
Регистрация обработчика событий происходит через атрибуты, которые указываются рядом с методом класса который и будет выполнять обработку события.
Установка через composer
Простое использование
Создадим класс с методами которые будут обрабатывать события.
Пометим метод атрибутом EventHandler с указанием модуля и типа события.
Методов с обработчиками в классе может быть несколько.
Более того один обработчик может вызываться в разных событиях.
Важно помнить, что параметры передаваемые в обработчик могут отличаться в зависимости от события, особенно в событиях старого ядра.
Так же можно указывать сортировку, по умолчанию 100.
Далее в init.php создаем менеджер событий и добавляем туда наш класс.
Можно добавлять сколько угодно классов через метод addEventHandlerClass.
Использование через настройки модуля
Тут почти все то же самое, что и в простом использовании, только добавление классов происходит через файл .settings.php в модулях.
Класс с обработчиками событий при этом лежит в модуле.
Создаем в нужном модуле файл .settings.php.
В нем описываем значения для eventHandlerClasses, примерно так:
Класс по структуре точно такой же как и Handlers из примера с простым использованием.
Далее в init.php создаем менеджер событий (если еще не создан) только уже без добавления класса руками.
Оба способа работают вместе. Подключаются классы из всех модулей, в которых есть описание настройки eventHandlerClasses, и следом подключается то что добавлили через $eventManager->addEventHandlerClass() в init.php.
Требования как и при обычном использовании \Bitrix\Main\EventManager::getInstance()->addEventHandler(), классы с обработчиками должны быть доступны для вызовов, т.е. подгружены через автолоад модулей или кастомно.
В классе может быть 10 методов которые отвечают за обработку событий. Если раньше для этого прописывалось 10 раз \Bitrix\Main\EventManager::getInstance()->addEventHandler(), то сейчас будет достаточно передать класс в менеджер событий пакета $eventManager->addEventHandlerClass(Handlers::class).