Метод has класса ServiceLocator
Метод has класса ServiceLocator проверяет,
зарегистрирован ли сервис с указанным идентификатором
в локаторе сервисов. Первым параметром передаётся
строковый идентификатор сервиса. Метод возвращает
true, если сервис доступен, и false в противном случае.
Синтаксис
public function has(string $id): bool
Пример
Давайте создадим локатор сервисов и проверим наличие
сервиса 'article':
<?php
namespace AppService;
use SymfonyComponentDependencyInjectionServiceLocator;
class LocatorChecker
{
public function check(): void
{
$locator = new ServiceLocator([
'article' => fn () => 'article service',
]);
$res = $locator->has('article');
var_dump($res);
}
}
?>
Результат выполнения кода:
true
Пример
Давайте проверим наличие сервиса, которого нет в локаторе:
<?php
namespace AppService;
use SymfonyComponentDependencyInjectionServiceLocator;
class LocatorChecker
{
public function check(): void
{
$locator = new ServiceLocator([
'article' => fn () => 'article service',
]);
$res = $locator->has('user');
var_dump($res);
}
}
?>
Результат выполнения кода:
false
Пример
Давайте используем метод has для безопасного
получения сервиса через метод get:
<?php
namespace AppService;
use SymfonyComponentDependencyInjectionServiceLocator;
class LocatorChecker
{
public function check(): void
{
$locator = new ServiceLocator([
'article' => fn () => 'article service',
'user' => fn () => 'user service',
]);
if ($locator->has('article')) {
echo $locator->get('article');
}
}
}
?>
Результат выполнения кода:
"article service"
Смотрите также
-
класс
ServiceLocator,
который хранит набор сервисов по идентификаторам -
метод
get,
который возвращает сервис по его идентификатору -
метод
getProvidedServices,
который возвращает список доступных сервисов -
класс
Container,
который управляет сервисами приложения