Symfony会自动删除工厂服务吗?
不知道发生了什么,但我的包正确加载service.xml
文件:
<services>
<service id="gremo_subscription_factory"
class="%gremo_subscription_factory.class%" public="false">
<argument>%gremo_subscription.interval%</argument>
</service>
<service id="gremo_subscription" class="%gremo_subscription.class%"
factory-service="gremo_subscription_factory"
factory-method="getSubscription">
</service>
</services>
这是由扩展类完成的:
public function load(array $configs, ContainerBuilder $container)
{
$processor = new Processor();
$configuration = new Configuration();
$config = $processor->processConfiguration($configuration, $configs);
$loader = new XmlFileLoader($container,
new FileLocator(__DIR__.'/../Resources/config'));
$loader->load('services.xml');
}
服务gremo_subscription_factory
的定义存在(容器中显示服务定义的var_dump
)。但是,当我尝试从另一个包中访问gremo_subscription
服务(例如,来自控制器)时:
$subscription = $this->get('gremo_subscription');
我得到例外:
您已请求不存在的服务 “gremo_subscription_factory”。
为什么会这样?
答案 0 :(得分:1)
您不应将gremo_subscription_factory
设为私有。
删除服务上的public="false"
标志。