Php 如何通过Symfony依赖注入(递归)获得同一类的多个对象?
我尝试使用symfonydi获取同一类但具有不同属性值的对象,但收到的对象完全相同。我曾尝试探索Symfony doc,但找不到答案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() {
<?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