SuperAPI AI 工具集

bitrix-events

通用与其它

查看项目

更新于 10-15 17:30

技能介绍

用途:本技能介绍 Bitrix 框架事件机制,帮助判断某个事件的处理器签名应按 D7 事件对象还是旧式原始参数来编写。

主要能力:说明由谁触发事件决定处理器签名——new Event(...) 加 ->send() 派发时,VERSION 2 用 registerEventHandler/addEventHandler 传入 Event 对象,VERSION 1 兼容模式下传入 ...array_values($params);而 GetModuleEvents() 加 ExecuteModuleEventEx() 的旧式调用传原始参数,例如 array &$arFields。旧式 OnBefore* 取消需 $APPLICATION->ThrowException('…') 并 return false,调用方检查 === false,通过引用 &$arFields 修改数据,返回数组会被忽略。ORM 与高负载事件使用 Bitrix\Main\ORM\EventManager 与 ORM\EventResult::modifyFields()。

用法:可用 php bitrix.php make:event PostCreated -m vendor.blog -C Post 生成 D7 事件类(需自行补参数),再用 send() 派发并遍历 getResults()。返回 EventResult(EventResult::ERROR, ['error' => new Error('…', 'CODE')]) 可带原因取消,但仅读取结果的调用方会遵守。handler 用 php bitrix.php make:eventhandler 生成,为静态回调,需在内部自行解析服务。注册分持久注册(模块安装器,卸载时用相同参数反注册)和按请求 addEventHandler,顺序按 $sort 升序(默认 100)。Event::send() 即使出现 ERROR 也会继续执行所有 handler,但抛异常会中断链并上抛。

限制:示例代码仅为片段,实际生成类不自带参数;兼容模式下参数为展开数组;具体事件的取消是否被遵守取决于调用方;资料未提供收费、价格与平台信息。