Метод get класса ContainerBag
Метод get класса ContainerBag возвращает
сервис из контейнера по его идентификатору.
Первым параметром передаётся строковый идентификатор
сервиса. Если сервис не найден, выбрасывается
исключение NotFoundException. Метод является
частью реализации PSR-11 контейнера.
Синтаксис
public function get(string $id): mixed
Пример
Давайте получим сервис mailer из контейнера
и вызовем его метод:
<?php
namespace AppService;
use SymfonyComponentDependencyInjectionContainerBagInterface;
class ArticleService
{
private ContainerBagInterface $container;
public function __construct(ContainerBagInterface $container)
{
$this->container = $container;
}
public function send(): string
{
$mailer = $this->container->get('mailer');
return get_class($mailer);
}
}
?>
Результат выполнения кода:
"SymfonyComponentMailerMailer"
Пример
Давайте обработаем ситуацию, когда сервис не найден:
<?php
namespace AppService;
use SymfonyComponentDependencyInjectionContainerBagInterface;
use SymfonyComponentDependencyInjectionExceptionNotFoundException;
class ArticleService
{
private ContainerBagInterface $container;
public function __construct(ContainerBagInterface $container)
{
$this->container = $container;
}
public function find(): string
{
try {
$service = $this->container->get('unknown_service');
return get_class($service);
} catch (NotFoundException $e) {
return 'service not found';
}
}
}
?>
Результат выполнения кода:
"service not found"
Смотрите также
-
класс
ContainerBag,
который предоставляет доступ к сервисам контейнера -
метод
has,
который проверяет наличие сервиса в контейнере -
метод
all,
который возвращает все сервисы контейнера -
класс
Container,
который управляет сервисами приложения