РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
618 of 1361 menu

Метод supportsClass класса UserProvider

Метод supportsClass класса UserProvider проверяет, может ли провайдер пользователей работать с указанным классом сущности. Первым параметром передаётся имя класса, который необходимо проверить. Метод возвращает true, если провайдер поддерживает этот класс, и false в противном случае. Этот метод используется Symfony для выбора подходящего провайдера при загрузке пользователя по идентификатору.

Синтаксис

public function supportsClass(string $class): bool

Пример

Давайте создадим провайдер пользователей, который поддерживает только класс User:

<?php namespace AppSecurity; use AppEntityUser; use SymfonyComponentSecurityCoreUserUserInterface; use SymfonyComponentSecurityCoreUserUserProviderInterface; use SymfonyComponentSecurityCoreExceptionUnsupportedUserException; class UserProvider implements UserProviderInterface { public function loadUserByIdentifier(string $identifier): UserInterface { // load user logic return new User(); } public function refreshUser(UserInterface $user): UserInterface { // refresh user logic return $user; } public function supportsClass(string $class): bool { return $class === User::class; } } ?>

Проверим работу метода для класса User:

<?php $provider = new UserProvider(); $res = $provider->supportsClass(User::class); var_dump($res); ?>

Результат выполнения кода:

true

Пример

Давайте проверим, что провайдер не поддерживает другой класс Admin:

<?php namespace AppSecurity; use AppEntityUser; use AppEntityAdmin; use SymfonyComponentSecurityCoreUserUserInterface; use SymfonyComponentSecurityCoreUserUserProviderInterface; class UserProvider implements UserProviderInterface { public function loadUserByIdentifier(string $identifier): UserInterface { // load user logic return new User(); } public function refreshUser(UserInterface $user): UserInterface { // refresh user logic return $user; } public function supportsClass(string $class): bool { return $class === User::class; } } ?>

Проверим работу метода для класса Admin:

<?php $provider = new UserProvider(); $res = $provider->supportsClass(Admin::class); var_dump($res); ?>

Результат выполнения кода:

false

Пример

Давайте создадим провайдер, который поддерживает несколько классов пользователей:

<?php namespace AppSecurity; use AppEntityUser; use AppEntityAdmin; use SymfonyComponentSecurityCoreUserUserInterface; use SymfonyComponentSecurityCoreUserUserProviderInterface; class MultiUserProvider implements UserProviderInterface { public function loadUserByIdentifier(string $identifier): UserInterface { // load user logic return new User(); } public function refreshUser(UserInterface $user): UserInterface { // refresh user logic return $user; } public function supportsClass(string $class): bool { return in_array($class, [User::class, Admin::class], true); } } ?>

Проверим работу метода для класса Admin:

<?php $provider = new MultiUserProvider(); $res = $provider->supportsClass(Admin::class); var_dump($res); ?>

Результат выполнения кода:

true

Смотрите также

  • класс UserProvider,
    который загружает пользователей из хранилища
  • метод loadUserByIdentifier,
    который загружает пользователя по идентификатору
  • метод refreshUser,
    который обновляет данные пользователя
  • класс UserBadge,
    который хранит идентификатор пользователя
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить