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