HEX
Server: Apache
System: Linux webm004.cluster121.gra.hosting.ovh.net 5.15.167-ovh-vps-grsec-zfs-classid #1 SMP Tue Sep 17 08:14:20 UTC 2024 x86_64
User: grainesdfo (155059)
PHP: 5.4.45
Disabled: _dyuweyrj4,_dyuweyrj4r,dl
Upload Files
File: /home/grainesdfo/www/wp-content/plugins/backwpup/src/StorageProviders/CloudProviderManager.php
<?php
namespace WPMedia\BackWPup\StorageProviders;

use WPMedia\BackWPup\StorageProviders\ProviderInterface;

class CloudProviderManager {

	/**
	 * List of registered cloud storage providers.
	 *
	 * @var ProviderInterface[]
	 */
	private $providers = [];

	/**
	 * CloudProviderManager constructor.
	 *
	 * Initializes the CloudProviderManager with an array of storage providers.
	 * Each provider must implement the ProviderInterface and will be stored
	 * in the $providers property, keyed by the provider's name.
	 *
	 * @param ProviderInterface[] $providers Array of storage provider instances.
	 */
	public function __construct( array $providers ) {
		foreach ( $providers as $provider ) {
			/**
			 * Cloud storage provider instance.
			 *
			 * @var ProviderInterface $provider
			 */
			$this->providers[ $provider->get_name() ] = $provider;
		}
	}

	/**
	 * Retrieves a cloud storage provider by its name.
	 *
	 * @param string $cloud_name The name of the cloud provider to retrieve.
	 * @return ProviderInterface The repository interface for the specified cloud provider.
	 * @throws \Exception If the specified provider does not exist.
	 */
	public function get_provider( string $cloud_name ): ProviderInterface {
		if ( ! isset( $this->providers[ $cloud_name ] ) ) {
			throw new \Exception( "Unknown provider: $cloud_name" ); // phpcs:ignore WordPress.Security.EscapeOutput.ExceptionNotEscaped
		}
		return $this->providers[ $cloud_name ];
	}

	/**
	 * Retrieves all registered cloud storage providers.
	 *
	 * @return array List of all cloud storage provider instances.
	 */
	public function get_all_providers(): array {
		return $this->providers;
	}
}