login($login, $password); * Auth::instance()->loggedIn(); * Auth::instance()->getUser(); * Auth::instance()->logout(); */ class Auth { /** @var array> Реализации по имени драйвера */ protected static array $_drivers = [ 'file' => FileAuthDriver::class, // 'db' => \Services\Auth\DbAuthDriver::class, // позже // 'ldap' => \Services\Auth\LdapAuthDriver::class, // позже // 'keycloak' => \Services\Auth\KeycloakAuthDriver::class, // позже ]; /** @var array Кэш созданных драйверов по имени */ protected static array $_instances = []; /** * Возвращает драйвер авторизации по имени (кэшируется). * * @param string|null $name Имя драйвера; null — значение по умолчанию из конфига * @return AuthDriver * @throws MyException Если драйвер не зарегистрирован */ public static function instance(?string $name = null): AuthDriver { $name ??= Config::get('auth', 'driver') ?? 'file'; if (!isset(self::$_instances[$name])) { if (!isset(self::$_drivers[$name])) { throw new MyException('Неизвестный драйвер авторизации: :name', [':name' => $name]); } $class = self::$_drivers[$name]; self::$_instances[$name] = new $class(); } return self::$_instances[$name]; } }