دریافت سرویسها از Service Container
دریافت سرویسها از Service Container
به شیوههای زیر میتوانید از service container درخواست سرویس کنید:
قراردادن سرویسها درون کلاس Command
استفاده از قسمت arguments هنگام ثبت کلاس Command در فایل console.services.yml.
services:
example.example_default:
class: Drupal\example\Command\DefaultCommand`
arguments: ['@entity_type.manager']
tags:
- { name: drupal.command }
افزودن یک متغیر محافظت شده.
/**
* The $entityTypeManager definition.
*
* @var EntityTypeManager
*/
protected $entityTypeManager;
ارسال سرویس با استفاده از متد __construct
/**
* Constructs a new DefaultCommand object.
*/
public function __construct(EntityTypeManager $entity_type_manager) {
$this->entityTypeManager = $entity_type_manager;
parent::__construct();
}
گسترش کلاس پایه ContainerAwareCommand در کلاس Command
با استفاده از این روش شما به service container دسترسی دارید، به عبارت دیگر، به هر سرویس پیکربندی شده موجود توسط متد get دسترسی دارید.
protected function execute(InputInterface $input, OutputInterface $output)
{
$uid = $input->getArgument('uid');
$entityTypeManager = $this->get('entity_type.manager');;
if ($entityTypeManager) {
$user = $entityTypeManager->getStorage('user')->load($uid);
}
}