SuperAPI AI 工具集

interfaces-and-autowiring

通用与其它

查看项目

更新于 10-15 21:08

技能介绍

用途:处理 Symfony 依赖注入中的接口抽象与自动装配问题,适用于消费者依赖具体类需可替换或便于测试、同一接口存在多个实现需注入正确实现、为已有服务添加日志/缓存/重试等横切行为,以及注入标量、参数、环境变量或所有带标签服务等场景;也用于排查“cannot autowire”或类型歧义错误。

主要能力:为消费者真正需要的部分提取聚焦接口;当只有一个实现时由自动装配直接绑定;存在多个实现时,通过命名别名和 #[Target] 为每个消费者选择实现;用 #[AsDecorator] 在不修改或继承原服务的情况下包一层行为;用 #[Autowire] 注入标量,用 #[AutowireIterator] 注入带标签的服务集合;使用 debug:autowiring 逐一确认相关类型的装配结果。

使用方式:默认工作流为提取接口、让自动装配绑定单一实现、多实现时用别名加 #[Target] 选择、用装饰器包装服务、用属性注入标量与标签集合,最后用 debug:autowiring 验证。使用方式相关具体代码、配置与命令细节需参考 reference.md,资料未展开。

适用场景:需要可替换或可测试依赖的服务、多实现选择、横切行为包装、参数与环境变量注入、标签服务集合等。

限制与约束:采用构造函数注入私有 readonly 依赖,不使用 setter 注入,不从容器直接取服务;接口保持精简,每个接口对应一个消费者需求;服务默认设为 final,优先装饰而非继承;仅对某些路径跳过、开销较大的依赖使用懒加载服务或服务闭包。输出约定包括接口及其绑定或别名、装饰器或标签集合及其优先级、相关类型的 debug:autowiring 输出。具体实现细节与示例暂未提供。