Symfony 如何防止实体在容器中被列为服务?
当我运行下面的命令时,我可以看到Symfony将应用程序中的每个类都视为潜在的可注入服务:Symfony 如何防止实体在容器中被列为服务?,symfony,dependency-injection,symfony4,ioc-container,Symfony,Dependency Injection,Symfony4,Ioc Container,当我运行下面的命令时,我可以看到Symfony将应用程序中的每个类都视为潜在的可注入服务: $ bin/console debug:container Symfony Container Services ========================== ------------------------------- ----------------------------- Service ID Class name
$ bin/console debug:container
Symfony Container Services
==========================
------------------------------- -----------------------------
Service ID Class name
------------------------------- -----------------------------
App\Domain\Model\Product App\Domain\Model\Product
App\Domain\Model\Site App\Domain\Model\Site
App\Domain\Model\User App\Domain\Model\User
...
这包括实体和值对象,它们显然不应该也永远不会被注入,因此不应该在容器中注册
这是预期的吗?有没有办法:
- 明确禁止在容器中注册黑名单类
- 或者明确列出应该在容器中注册的服务
- 这是意料之中的事
看看config/services.yaml,这里发生了神奇的变化(至少在我的services.yaml中发生了这种变化):
这实际上应该将
src
目录中除实体、迁移和测试之外的所有内容都转换为服务。显然,你可以根据自己的需要来调整
所以本质上。。。如果删除该App\
条目,则必须显式地添加所有应该是服务的类的白名单
另一方面,示例中显示了黑名单,尽管示例非常一般。也许有更复杂的方法可以做到这一点……这是意料之中的
看看config/services.yaml,这里发生了神奇的变化(至少在我的services.yaml中发生了这种变化):
这实际上应该将src
目录中除实体、迁移和测试之外的所有内容都转换为服务。显然,你可以根据自己的需要来调整
所以本质上。。。如果删除该App\
条目,则必须显式地添加所有应该是服务的类的白名单
另一方面,示例中显示了黑名单,尽管示例非常一般。也许有更复杂的方法可以做到这一点……谢谢!我猜白名单是通过
包括:
?“白名单”是通过资源:
实现的,谢谢!我猜白名单是通过include:
?“白名单”是通过资源:
# removed lines for readability before, after and in-between the following
services:
App\:
resource: '../src/*'
exclude: '../src/{Entity,Migrations,Tests}'