Symfony 2删除了工厂服务?

时间:2012-12-14 16:58:54

标签: exception symfony dependency-injection symfony-2.1

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”。

为什么会这样?

1 个答案:

答案 0 :(得分:1)

您不应将gremo_subscription_factory设为私有。

删除服务上的public="false"标志。