technique102/bitrix-events-attributes
Composer 安装命令:
composer require technique102/bitrix-events-attributes
包简介
Use the php8 attribute in Bitrix for event handlers
关键字:
README 文档
README
Пакет поможет избавиться от классической ситуации при разработке на 1С-Битрикс, когда есть файл events.php который подключается в init.php и в котором большое количество вызовов \Bitrix\Main\EventManager::getInstance()->addEventHandler().
Регистрация обработчика событий происходит через атрибуты, которые указываются рядом с методом класса который и будет выполнять обработку события.
Установка через composer
composer require technique102/bitrix-events-attributes
Простое использование
Создадим класс с методами которые будут обрабатывать события.
Пометим метод атрибутом EventHandler с указанием модуля и типа события.
Методов с обработчиками в классе может быть несколько.
Более того один обработчик может вызываться в разных событиях.
Важно помнить, что параметры передаваемые в обработчик могут отличаться в зависимости от события, особенно в событиях старого ядра.
Так же можно указывать сортировку, по умолчанию 100.
use Technique102\BitrixEventsAttributes\Attributes\EventHandler; class Handlers { #[EventHandler('main', 'OnPageStart', 10)] #[EventHandler('main', 'OnPageStart')] public static function handlerOne(): void { \Bitrix\Main\Diag\Debug::writeToFile('WORK handlerOne!!!', '', 'bitrix_log.txt'); } #[EventHandler('catalog', '\Bitrix\Catalog\Product::OnBeforeUpdate')] #[EventHandler('catalog', '\Bitrix\Catalog\Product::OnAfterAdd')] public static function handlerTwo(\Bitrix\Main\Event $e): void { \Bitrix\Main\Diag\Debug::writeToFile($e->getParameters(), '', 'bitrix_log.txt'); } #[EventHandler('main', 'OnPageStart', 50)] public static function handlerThree(): void { \Bitrix\Main\Diag\Debug::writeToFile('WORK handlerThree!!!', '', 'bitrix_log.txt'); } }
Далее в init.php создаем менеджер событий и добавляем туда наш класс.
use Technique102\BitrixEventsAttributes\EventManager; $eventManager = EventManager::getInstance(); $eventManager->addEventHandlerClass(Handlers::class); $eventManager->boot();
Можно добавлять сколько угодно классов через метод addEventHandlerClass.
Использование через настройки модуля
Тут почти все то же самое, что и в простом использовании, только добавление классов происходит через файл .settings.php в модулях.
Класс с обработчиками событий при этом лежит в модуле.
Создаем в нужном модуле файл .settings.php.
В нем описываем значения для eventHandlerClasses, примерно так:
<?php return [ 'eventHandlerClasses' => [ 'value' => [ \Vendor\ModuleName\EventHandlers\OnAfterUserAuthorize::class ], 'readonly' => true ] ];
Класс по структуре точно такой же как и Handlers из примера с простым использованием.
Далее в init.php создаем менеджер событий (если еще не создан) только уже без добавления класса руками.
Оба способа работают вместе. Подключаются классы из всех модулей, в которых есть описание настройки eventHandlerClasses, и следом подключается то что добавлили через $eventManager->addEventHandlerClass() в init.php.
Требования как и при обычном использовании \Bitrix\Main\EventManager::getInstance()->addEventHandler(), классы с обработчиками должны быть доступны для вызовов, т.е. подгружены через автолоад модулей или кастомно.
В классе может быть 10 методов которые отвечают за обработку событий. Если раньше для этого прописывалось 10 раз \Bitrix\Main\EventManager::getInstance()->addEventHandler(), то сейчас будет достаточно передать класс в менеджер событий пакета $eventManager->addEventHandlerClass(Handlers::class).
technique102/bitrix-events-attributes 适用场景与选型建议
technique102/bitrix-events-attributes 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 31 次下载、GitHub Stars 达 3, 最近一次更新时间为 2023 年 06 月 01 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「events」 「attributes」 「bitrix」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 technique102/bitrix-events-attributes 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 technique102/bitrix-events-attributes 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 technique102/bitrix-events-attributes 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Библиотека для реализаций паттерна Pub/Sub
Wireless Cross-Component Communication
A powerful event calendar Tool for Laravel's Nova 5.
A library that allows you to easily use the PHP-VCR library in your PHPUnit tests.
This Package provides some usefully console features like the attribute syntax for arguments and options, validation, auto ask and casting.
Command bus implementation: Commands and domain events
统计信息
- 总下载量: 31
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 3
- 点击次数: 7
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2023-06-01