用途:Laravel Actions 主张把每个业务操作放进一个 Action 类,控制器、Job、Listener 不写领域逻辑,只委托给 Action。
主要能力:Action 为可调用类,只有 __invoke() 方法;单一职责、可组合、无状态、类型安全,并用数据库事务包裹数据修改。支持依赖注入组合其他 Action、guard 方法校验业务规则、私有辅助方法拆分步骤、readonly 属性保存调用上下文。命名格式为 {Verb}{Entity}Action,如 CreateOrderAction。
使用方式:通过依赖注入或 resolve() 调用,例如 resolve(CreateOrderAction::class)(user(), CreateOrderData::from($request));注意用 resolve() 而非 app()。数据修改用 DB::transaction 包裹,业务规则违规抛领域异常。按领域实体组织目录,如 app/Actions/Order/,不要按动作类型分组。测试用 Pest 的 triple-A 模式,通过 resolve() 调用 Action 并断言。
适用场景:任何领域操作(含简单 CRUD)、跨多处复用的操作、多步骤工作流、Job 或 Listener 需要执行领域逻辑时。不适用:纯展示用数据查询、HTTP 相关关注点、格式化/展示逻辑。
限制:资料未提供安装命令、版本要求、收费或性能数据,暂未提供。