在我的应用程序中,我生成n
了许多类。它们都具有相同的骨架并具有相似的目的。它们还共享依赖项。
而不是像这样添加n
条目:services.xml
<service id="acme.security.first_voter" class="Acme\SecurityBundle\Security\Authorization\Voter\FirstVoter" public="false">
<tag name="security.voter" />
<argument type="service" id="logger" />
</service>
<service id="acme.security.second_voter" class="Acme\SecurityBundle\Security\Authorization\Voter\SecondVoter" public="false">
<tag name="security.voter" />
<argument type="service" id="logger" />
</service>
我想简单地添加一个这样的条目:
<service id="acme.security.base_voter" class="Acme\SecurityBundle\Security\Authorization\Voter\BaseVoter" public="false">
<tag name="security.voter" />
<argument type="service" id="logger" />
</service>
并在每个选民中简单地添加
use Acme\SecurityBundle\Security\Authorization\Voter\BaseVoter;
class FirstVoter extends BaseVoter
但这不起作用。
我见过使用 Parent Services 管理公共依赖项,但它不能解决我的问题,因为它需要我添加一个
<service id="acme.security.first_voter" class="Acme\SecurityBundle\Security\Authorization\Voter\FirstVoter" parent="base_voter"/>
<service id="acme.security.second_voter" class="Acme\SecurityBundle\Security\Authorization\Voter\SecondVoter" parent="base_voter"/>
对于每个选民......但这正是我想要避免的,因为n
可以是 5 或.. 500。
我已经阅读了一些关于将依赖项注入接口的旧 Richard Miller 博客文章,并且所有实现该接口的类都将“继承注入的依赖项”(也被注入该服务)。这正是我需要的!不幸的是,由于某种原因,它已被删除,并且不适用于 Symfony2.3。
我的问题有什么解决办法吗?