symfony 容器:未调用注入 class 的构造函数
symfony container: injected class's constructor not called
当我通过构造函数注入将一个服务注入另一个服务时,注入的 class 的构造函数没有被调用。
有没有人对此有解释。我忽略了什么?
我出于演示目的创建了这个小示例:
services.yml
services:
foo.A:
class: Acme\FooBundle\A
foo.B:
class: Acme\FooBundle\B
arguments:
a: "@foo.A"
Class答:
<?php
namespace Acme\FooBundle;
class A
{
public function __construct()
{
echo "constructing A\n";
}
}
Class乙:
<?php
namespace Acme\FooBundle;
class B
{
public function __construct($a)
{
echo "constructing B\n";
}
}
测试代码:
echo "\nTest A ----------------------\n";
$this->getContainer()->get('foo.A');
echo "\nTest B ----------------------\n";
$this->getContainer()->get('foo.B');
输出:
测试A--------------------
构建 A
测试 B ----------------------
构建 B
检索时 'foo.B' 我希望 A 的构造函数也会被调用。
正如您在 $this->getContainer()->get('foo.B');
之前调用 $this->getContainer()->get('foo.A');
一样,已经存在 class A
的实例,因此不会再次创建它。
尝试仅调用 $this->getContainer()->get('foo.B');
,您将获得两个构造函数的输出
当我通过构造函数注入将一个服务注入另一个服务时,注入的 class 的构造函数没有被调用。 有没有人对此有解释。我忽略了什么?
我出于演示目的创建了这个小示例:
services.yml
services:
foo.A:
class: Acme\FooBundle\A
foo.B:
class: Acme\FooBundle\B
arguments:
a: "@foo.A"
Class答:
<?php
namespace Acme\FooBundle;
class A
{
public function __construct()
{
echo "constructing A\n";
}
}
Class乙:
<?php
namespace Acme\FooBundle;
class B
{
public function __construct($a)
{
echo "constructing B\n";
}
}
测试代码:
echo "\nTest A ----------------------\n";
$this->getContainer()->get('foo.A');
echo "\nTest B ----------------------\n";
$this->getContainer()->get('foo.B');
输出:
测试A-------------------- 构建 A
测试 B ---------------------- 构建 B
检索时 'foo.B' 我希望 A 的构造函数也会被调用。
正如您在 $this->getContainer()->get('foo.B');
之前调用 $this->getContainer()->get('foo.A');
一样,已经存在 class A
的实例,因此不会再次创建它。
尝试仅调用 $this->getContainer()->get('foo.B');
,您将获得两个构造函数的输出