mcpField
C
controller-cleanup

controller-cleanup

github.com/dev-toolings开发22795 次安装3 周前更新
代码仓库

关于 controller-cleanup

面向 Symfony 开发的技能,通过将业务逻辑及相关职责移至专用组件来精简控制器。重点是保持 HTTP 行为不变,并用功能测试验证重构。

主要功能

  1. 01梳理控制器职责
  2. 02重构前测试 HTTP 行为
  3. 03将请求映射为经校验的 DTO
  4. 04提取服务、投票器和处理器
  5. 05让精简的控制器操作负责委派
  6. 06使用可调用的控制台命令

适用场景

  1. 01重构包含业务逻辑的控制器操作
  2. 02将校验与授权和持久化分离
  3. 03让控制台命令委派给共享服务

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/dev-toolings/superpowers-symfony --skill controller-cleanup

安装后在 Claude Code 中输入/controller-cleanup确认已加载。

附带文件reference.md

详细介绍

控制器清理(Symfony)

适用场景

  • 控制器操作中包含业务逻辑、查询,或代码行数不止几行。
  • 在同一个操作中混杂了输入解析、验证、授权和持久化。
  • 控制台命令自行完成实际工作,而不是委托处理。

默认工作流

  1. 列出该操作执行的内容:输入、验证、授权、业务逻辑、持久化、副作用。
  2. 移动任何内容之前,先用功能测试覆盖当前 HTTP 行为。
  3. 使用 #[MapRequestPayload] 或 #[MapQueryString] 将输入映射到 DTO,并让验证器拒绝无效输入。
  4. 将业务逻辑移入服务或命令处理器,将授权移入投票器,将副作用移入事件或消息。
  5. 让操作仅负责解析、授权、委托和响应,控制在 5 到 10 行。

防护措施

  • 将服务类型提示为参数或构造函数参数;切勿从容器中获取服务。
  • 保持 HTTP 行为完全一致:状态码和负载都不变。
  • 不要把逻辑移入一个只是换了新名字的旧控制器“管理器”。
  • 将控制台入口编写为可调用的 #[AsCommand] 类(Symfony 7.3+),并委托给相同的服务。

渐进式披露

  • 使用此文件了解执行方式和风险控制。
  • 需要深入的实现细节时,打开参考资料。

输出要求

  • 精简的操作,只负责委托。
  • 提取出的 DTO、服务、投票器或处理器,各自只承担一项职责。
  • 功能测试证明 HTTP 行为保持不变。

参考资料

  • reference.md

评论

支持 Markdown