Tôi luôn sử dụng cách tiêm dịch vụ này cho bộ điều khiển:
<?php
không gian tên Drupal\TestModule\Controller;
sử dụng Drupal\Core\Controller\ControllerBase;
sử dụng Symfony\Component\DependencyInjection\ContainerInterface;
lớp TestModuleController mở rộng ControllerBase {
$testModule được bảo vệ;
hàm công khai __construct(TestModule $testModule) {
$this->testModule = $testModule;
}
tạo hàm tĩnh công khai (ContainerInterface $container) {
trả về tĩnh mới (
$container->get('testModule.service')
);
}
hàm công khai testModule() {
trở lại [
'#type' => 'đánh dấu',
'#markup' => $this->testModule->getTestModule(),
];
}
}
Nhưng với bảng điều khiển drupal, tôi tạo Trình điều khiển bằng dịch vụ (lệnh gcon drupal) và nhận mã khác:
<?php
không gian tên Drupal\TestModule\Controller;
sử dụng Drupal\Core\Controller\ControllerBase;
sử dụng Symfony\Component\DependencyInjection\ContainerInterface;
lớp TestModuleController mở rộng ControllerBase {
$testModule được bảo vệ;
tạo hàm tĩnh công khai (ContainerInterface $container) {
$instance = parent::create($container);
$instance->testModule = $container->get('testModule.service');
trả lại cá thể $;
}
hàm công khai testModule() {
trở lại [
'#type' => 'đánh dấu',
'#markup' => $this->testModule->getTestModule(),
];
}
}
Cách thứ hai này có tốt hơn cách thứ nhất không và tôi nên sử dụng cách nào?