You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Symfony依赖注入:如何排除Domain目录下非Repository类?

关于Symfony依赖注入自动装配排除规则的问题

我们使用Symfony Dependency Injection Service已有一段时间,此前均手动关联每个服务与其接口,现在希望通过自动装配实现自动化配置,但在exclude选项的配置上遇到了问题。

此前发现多排除路径仅在高版本Symfony中支持,因此已升级至当前PHP版本兼容的最新Symfony 5.4版本。现在可以正常配置路径列表,但无法设置带否定逻辑的排除路径。根据官方文档,exclude支持合法的glob模式,但我们尝试的多种模式均无效。

具体需求

排除Domain目录下所有非Repository类,示例如下:

  • 需保留的文件:Domain/Repository/IUserRepository.php(不应被排除)
  • 需排除的文件:Domain/Repository/UserRepository/UserDTO.php(应被排除)

已尝试的glob模式

我们试过以下几种glob模式,但均未达到预期效果:

  • Domain/**/!(*Repository.php)
  • Domain/**/!(*Repository).php
  • Domain/**/[!]*Repository.php

调试后发现,这些模式转换为正则表达式时会保留原始的!字符,无法实现否定匹配的逻辑。

问题

是否存在Symfony可识别的单glob模式,能够实现排除Domain目录下所有非Repository类的需求?

补充说明

我们了解到相关的Issue和PR已被拒绝,原因可能涉及性能影响或需要整合更多glob变体。目前我们倾向于两种替代方案:

  1. 排除Repository目录以外的所有内容
  2. 将非Repository文件统一重命名为DTO后缀,再通过后缀匹配排除

但仍希望找到更直接的解决方案。


内容的提问来源于stack exchange,提问作者Lennert

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 22:37:12