用途:这是 Symfony 项目写代码的入口技能。它要求先读项目再动手,避免假设版本与约定,然后应用五条通用规则,并按当前任务加载对应子技能。
主要能力:
- 项目检测。每个会话执行一次:用 php -v | head -1 查看 PHP 版本;用一段 php -r 脚本读取 composer.lock,列出 symfony/framework-bundle、serializer、form、security-bundle、object-mapper、messenger、scheduler、lock、rate-limiter、asset-mapper、ux-live-component、doctrine/orm、doctrine/doctrine-fixtures-bundle、phpunit/phpunit、twig/twig 的版本;再 ls src/ config/packages/ 了解目录布局。据此判断可用属性、已装组件与既有约定。vendor/ 中的源码优先于技能文档。
- 五条通用规则:先写测试并看它失败;控制器只做翻译不做决策;仓储之外不写 DQL、QueryBuilder 或 SQL;两端使用 DTO(输入 DTO 承载校验,输出 DTO 承载契约,实体不进入模板或 JSON 响应);所有业务规则放在服务中,实体只存数据与映射。
- 分层:核心层(五条规则、层契约、输入输出 DTO、dama/doctrine-test-bundle、PHPStan、php-cs-fixer、本地开发循环)默认适用;按需层(查询计数测试、deptrac、Messenger/Scheduler/优先队列、缓存、关联 ID、健康检查、告警、签名 URL 与对象存储、Live Components 与 Mercure)由真实需求触发,不预先启用。
- 路由:按任务加载 symfony-yoandev-architecture、testing、http、doctrine、security、frontend、async、console、performance、quality、local-dev、deployment、observability、storage、upgrade 等子技能,通常一次涉及两三个。
使用方式:先执行检测命令,再按任务加载相应子技能,最后按交付前清单核对:测试先红后绿且实际运行过;如实报告 vendor/bin/phpunit 结果含失败;控制器无业务规则、仓储外无查询、实体不跨边界;替用户做的决定要明说,做不到的事要点名。
限制:资料未提供安装命令、收费方式、平台支持或效果数据。规则在边界上严格、在仪式上宽松,例如仅含路由参数的 GET 不需要输入 DTO,SELECT NEW 投影已匹配契约时即为输出 DTO,无规则的类不需要单独单元测试。