Когда я внедряю службу в другую через внедрение конструктора, конструктор внедренного класса не вызывается. Есть ли у кого-нибудь объяснение этому. Что я упускаю из виду?
Я создал этот небольшой образец для демонстрационных целей:
services.yml
services:
foo.A:
class: Acme\FooBundle\A
foo.B:
class: Acme\FooBundle\B
arguments:
a: "@foo.A"
Класс А:
<?php
namespace Acme\FooBundle;
class A
{
public function __construct()
{
echo "constructing A\n";
}
}
Класс Б:
<?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');
Вывод:
Тест А --------------------- построение А
Тест B --------------------- построение B
При извлечении 'foo.B' я ожидаю, что также будет вызван конструктор A.