Php 如何通过Symfony依赖注入(递归)获得同一类的多个对象?

Php 如何通过Symfony依赖注入(递归)获得同一类的多个对象?,php,symfony,dependency-injection,Php,Symfony,Dependency Injection,我尝试使用symfonydi获取同一类但具有不同属性值的对象,但收到的对象完全相同。我曾尝试探索Symfony doc,但找不到答案 <?php use Symfony\Component\DependencyInjection\ContainerBuilder; class Foo { public $container; public $booCollection = []; public function __construct() {

我尝试使用symfonydi获取同一类但具有不同属性值的对象,但收到的对象完全相同。我曾尝试探索Symfony doc,但找不到答案

<?php

use Symfony\Component\DependencyInjection\ContainerBuilder;


class Foo
{
    public $container;
    public $booCollection = [];

    public function __construct()
    {
        $this->container = $container = new ContainerBuilder();
        $this->container->setParameter('id', '');
        $this->container->register('boo', 'Boo')
            ->addArgument('%booid%');
    }

    public function getListOfBoo()
    {
        for ($id = 1; $id <= 2; $id++) {
            $this->container->setParameter('booid', $id);
            $this->booCollection[] = $this->container->get('boo');
        }
    }
}

class Boo
{
    public $id;
    public function __construct($id)
    {
        $this->id = $id;
    }
}

$foo = new Foo();
$foo->getListOfBoo();

var_dump($foo->booCollection);
?>
但我需要:

array (size=2)
    0 => 
        object(Boo)[32]
        public 'id' => int 1
    1 => 
        object(Boo)[32]
        public 'id' => int 2

您需要在服务定义中使用原型范围(symfony<2.8)或将shared设置为false(symfony>=2.8)

例如(<2.8)

例如(>=2.8)

有关更多信息:

array (size=2)
    0 => 
        object(Boo)[32]
        public 'id' => int 1
    1 => 
        object(Boo)[32]
        public 'id' => int 2
services:
    app.some_not_shared_service:
        class: ...
        scope: prototype
services:
    app.some_not_shared_service:
        class: ...
        shared: false