SuperAPI AI 工具集

doctrine-events

前端与建站

查看项目

更新于 10-15 21:08

技能介绍

用途:在 Symfony 中为 Doctrine 实体的持久化过程添加副作用,例如自动写入时间戳、生成 slug、更新搜索索引或发送通知;也用于把 EventSubscriberInterface 形式的 Doctrine 订阅者迁移到 ORM 3。

主要能力:提供三种机制的选择与接线方式——生命周期回调(单实体、无依赖)、实体监听器(单实体、需要服务)、全局生命周期监听器(横切所有实体)。通过属性 #[ORM\HasLifecycleCallbacks]、#[AsEntityListener]、#[AsDoctrineListener] 完成注册,并按事件类型为参数标注具体事件类,如 PostPersistEventArgs、PreUpdateEventArgs。

使用方式:按“回调 → 实体监听器 → 生命周期监听器”的顺序选择最窄的机制;用属性接线;对事件参数做类型标注;用针对真实数据库的功能测试验证副作用确实触发。输出物包括带正确属性的监听器或回调类、机制选择理由以及验证结果。

限制与注意:ORM 3.0 已移除 EventSubscriberInterface 形式的 Doctrine 订阅者,不应再引入;全局生命周期监听器会对每个实体触发,需尽早做实体类型检查;禁止在 Doctrine 事件处理器内调用 flush(),否则会破坏进行中的工作单元;preUpdate 受限,只能通过 $args->setNewValue() 修改字段,不能触碰关联。更多细节(三种机制、事件参数矩阵、订阅者迁移)见 reference.md。