Я всегда использую этот способ внедрения сервиса в контроллер:
<?php
пространство имен Drupal\TestModule\Controller;
используйте Drupal\Core\Controller\ControllerBase;
используйте Symfony\Component\DependencyInjection\ContainerInterface;
класс TestModuleController расширяет ControllerBase {
защищенный $testModule;
публичная функция __construct(TestModule $testModule) {
$this->testModule = $testModule;
}
общедоступная статическая функция create(ContainerInterface $container) {
вернуть новую статику(
$container->получить('testModule.service')
);
}
общедоступная функция testModule() {
возвращаться [
'#type' => 'разметка',
'#markup' => $this->testModule->getTestModule(),
];
}
}
Но с помощью консоли drupal я генерирую контроллер с сервисом (команда drupal gcon) и получаю другой код:
<?php
пространство имен Drupal\TestModule\Controller;
используйте Drupal\Core\Controller\ControllerBase;
используйте Symfony\Component\DependencyInjection\ContainerInterface;
класс TestModuleController расширяет ControllerBase {
защищенный $testModule;
общедоступная статическая функция create(ContainerInterface $container) {
$экземпляр = родитель::создать($контейнер);
$instance->testModule = $container->get('testModule.service');
вернуть $экземпляр;
}
общедоступная функция testModule() {
возвращаться [
'#type' => 'разметка',
'#markup' => $this->testModule->getTestModule(),
];
}
}
Этот второй способ лучше, чем первый, и какой я должен использовать?