Когато инжектирам услуга в друга чрез инжектиране на конструктор, конструкторът на инжектирания клас не се извиква. Някой има ли обяснение за това. Какво пренебрегвам?
Създадох тази малка проба за демонстрационни цели:
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";
}
}
Клас B:
<?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.