在PHP应用中,事务通常依赖ORM的
wrapInTransaction,但这会让应用层引入Doctrine等基础设施依赖,破坏六边形架构。文章提出三种解耦方案:- 定义
UnitOfWork端口接口,应用层只调用wrap,适配器(Doctrine/Laravel/PDO)负责具体实现- 使用
TransactionalDecorator装饰器,在依赖注入层包裹use case,使事务边界与业务逻辑彻底分离,并可叠加日志、重试等装饰- 实用折中:直接在应用层末尾调用
flush,简单但造成框架耦合,适合短期项目此外强调:避免嵌套事务,每次仅处理一个事务边界;可用反射测试在CI中强制确保无框架泄漏。
原文链接
#开发者 #工具
📢 频道:@DevToolboxHub
