Метод initialized класса Container
Метод initialized класса Container проверяет,
был ли уже создан (инициализирован) сервис с указанным
идентификатором. Первым параметром передаётся строковый
идентификатор сервиса. Метод возвращает true,
если сервис уже создан, и false в противном случае.
Этот метод удобен для отложенной проверки без фактического
создания экземпляра сервиса.
Синтаксис
public function initialized(string $id): bool
Пример
Давайте проверим, инициализирован ли сервис
'App\Service\ArticleService' до и после его получения:
<?php
namespace App\Controller;
use App\Service\ArticleService;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_index')]
public function index(): Response
{
$container = $this->container;
$before = $container->initialized(ArticleService::class);
$container->get(ArticleService::class);
$after = $container->initialized(ArticleService::class);
return new Response(var_export([$before, $after], true));
}
}
?>
Результат выполнения кода:
[false, true]
Пример
Давайте проверим инициализацию нескольких сервисов и выведем результат для каждого из них:
<?php
namespace App\Controller;
use App\Service\ArticleService;
use App\Service\UserService;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/services', name: 'article_services')]
public function services(): Response
{
$container = $this->container;
$ids = [
ArticleService::class,
UserService::class,
];
$container->get(ArticleService::class);
$res = [];
foreach ($ids as $id) {
$res[$id] = $container->initialized($id);
}
return new Response(var_export($res, true));
}
}
?>
Результат выполнения кода:
[
'App\Service\ArticleService' => true,
'App\Service\UserService' => false
]
Смотрите также
-
класс
Container,
который управляет сервисами приложения -
метод
get,
который возвращает сервис по идентификатору -
метод
has,
который проверяет наличие сервиса -
класс
ServiceLocator,
который предоставляет доступ к сервисам