在Symfony依赖注入服务中,我可以排除所有不以特定后缀结尾的文件吗?

m1m5dgzv  于 2023-11-22  发布在  其他
关注(0)|答案(1)|浏览(158)

我们一直在使用Symfony依赖注入服务一段时间了,但我们必须手动链接每个服务到其接口。我想通过自动布线自动化,但我有一些问题与排除选项。
我注意到提供多个排除路径只能在更高版本中实现,所以我更新到了当前PHP版本可以支持的最新版本(v5.4)。
现在我可以成功地提供一个路径列表,但是我不知道如何提供一个包含否定的路径。文档提到排除选项可以是任何有效的glob模式,但是即使我相信我的glob模式是有效的,它也不起作用。
我想从我的域文件夹中排除所有非存储库类,例如

  • Domain/Repository/IUserRepository.php =>不应被排除
  • Domain/Repository/UserRepository/UserDTO.php =>应该被排除

我试过使用这样的模式:

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

但是当在代码内部调试时,当将模式转换为正则表达式时,它会保留“!”字符raw。
有没有一种方法可以使用Symfony处理的单个glob模式从Domain文件夹中排除所有非存储库类?

**编辑:**我在他们的GitHub上发现了一个被拒绝的问题和PR:https://github.com/symfony/symfony/pull/35737

听起来他们要么认为这会对性能产生太大的影响,要么他们想等到他们可以同时集成更多的glob模式“变体”。
如果有人仍然有一个解决方案,我将是伟大的,但现在我倾向于排除一切,但“仓库”文件夹和重命名/移动所有其他文件内有DTO后缀,并排除这些。

watbbzwu

watbbzwu1#

你就差一点!试试这个:

Domain/**/*[!Repository].php

字符串
如果你不想要存储库类,

Domain/**/*Repository.php


如果您确实需要存储库类,
你可以在这里玩这个glob模式测试仪https://www.digitalocean.com/community/tools/glob?comments=true&glob=Domain%2F%2A%2A%2F%2A%5B%21Repository%5D.php&matches=false&tests=Domain%2FRepository%2FIUserRepository.php&tests=Domain%2FRepository%2FUserRepository%2FUserDTO.php

相关问题