symfony DIC 3.0原型服务

时间:2015-06-26 08:03:25

标签: dependency-injection symfony

原型服务意味着服务,它作为依赖项传递,始终是新的新实例。 最后它类似于克隆依赖实例所需的实例,但它的清晰解决方案。

正如写作on Symfony news Twitter,范围已被正式弃用。 原型服务由范围建立。

如何在Symfony DIC 3.0配置中设置原型服务? (我更喜欢yml)

1 个答案:

答案 0 :(得分:4)

通过查看upgrade 2.7 to 2.8,它表示scope: prototype标记已更改为shared: false

取自升级文件....

新的共享标志已添加到服务定义中,以替代原型范围。

<强>之前:

use Symfony\Component\DependencyInjection\ContainerBuilder;

$container = new ContainerBuilder();
$container
    ->register('foo', 'stdClass')
    ->setScope(ContainerBuilder::SCOPE_PROTOTYPE)
;

services:
    foo:
        class: stdClass
        scope: prototype

<services>
    <service id="foo" class="stdClass" scope="prototype" />
</services>

<强>后:

use Symfony\Component\DependencyInjection\ContainerBuilder;

$container = new ContainerBuilder();
$container
    ->register('foo', 'stdClass')
    ->setShared(false)
;

services:
    foo:
        class: stdClass
        shared: false

<services>
    <service id="foo" class="stdClass" shared="false" />
</services>