У меня есть 3 службы и 1 контроллер. Проблема в том, что у службы дедушки есть проблема с автоматическим связыванием аргумента конструктора.
RegistrationController
имеет действие, в качестве аргумента которого используется сервис RegisterDB
. RegisterDB
extends DBALProvider
service. DBALProvider
расширяет BaseService
service. DBALProvider
имеет конструктор, который автоматически связывает некоторые аргументы и сохраняет их в свойствах, возвращаемых получателями. BaseService
имеет конструктор, который не имеет аргумента autowire, поэтому его свойство имеет значение null ( не ожидается NULL ).
Голый минимальный код:
RegistrationController.php
class RegistrationController extends AbstractController
{
public function register(RegisterDB $registerDB)
{
$registerDB->registerUser();die;
}
}
RegisterDB.php
class RegisterDB extends DBALProvider
{
public function registerUser()
{
dump($this->getTranslator());
dump($this->getContext());
}
}
DBALProvider.php
class DBALProvider extends BaseService
{
private $context;
public function __construct(EntityManagerInterface $entityManager)
{
$this->context = $entityManager->getConnection();
}
protected function getContext()
{
return $this->context;
}
}
BaseService.php
class BaseService
{
private $translator;
public function __construct(TranslatorInterface $translator)
{
$this->translator = $translator;
}
protected function getTranslator()
{
return $this->translator;
}
}
Проблема состоит в том, что в RegisterDB.php 1-й дамп dump($this->getTranslator());
выводит null
, но 2-й дамп показывает ожидаемый объект подключения. Что не так с моей цепочкой наследования?
Спасибо за отзыв.