. */ declare(strict_types=1); namespace App\Exceptions; use App\Services\InfoProviderSystem\Providers\InfoProviderInterface; /** * An exception denoting that a required info provider is not active. This can be used to display a user-friendly error message, * when a user tries to use an info provider that is not active. */ class InfoProviderNotActiveException extends \RuntimeException { public function __construct(public readonly string $providerKey, public readonly string $friendlyName) { parent::__construct(sprintf('The info provider "%s" (%s) is not active.', $this->friendlyName, $this->providerKey)); } /** * Creates an instance of this exception from an info provider instance * @param InfoProviderInterface $provider * @return self */ public static function fromProvider(InfoProviderInterface $provider): self { return new self($provider->getProviderKey(), $provider->getProviderInfo()['name'] ?? '???'); } }