HEX
Server: LiteSpeed
System: Linux s383.bitcommand.com 5.14.0-687.24.1.el9_8.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Jul 9 18:14:06 EDT 2026 x86_64
User: pclast (1605)
PHP: 8.1.34
Disabled: exec,system,passthru,shell_exec,escapeshellarg,escapeshellcmd,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: /home/pclast/public_html/wp-content/plugins/wp-rocket/inc/Engine/CDN/Drivers/DriverFactory.php
<?php
declare(strict_types=1);

namespace WP_Rocket\Engine\CDN\Drivers;

use WP_Rocket\Dependencies\Psr\Container\ContainerInterface;
use WP_Rocket\Engine\CDN\Context;

/**
 * Factory for creating CDN drivers based on current context
 */
class DriverFactory {

	/**
	 * Container instance for dependency injection
	 *
	 * @var ContainerInterface
	 */
	private $container;

	/**
	 * CDN Context for determining active driver
	 *
	 * @var Context
	 */
	private $context;

	/**
	 * Constructor.
	 *
	 * @param ContainerInterface $container Container instance.
	 * @param Context            $context Context instance.
	 */
	public function __construct( ContainerInterface $container, Context $context ) {
		$this->container = $container;
		$this->context   = $context;
	}

	/**
	 * Create appropriate driver based on current context
	 *
	 * @return DriverInterface|null Driver container ID.
	 */
	public function create(): ?DriverInterface {
		$active_driver = $this->context->get_driver();

		switch ( $active_driver ) {
			case Context::ROCKETCDN_FREE_TYPE:
				return $this->container->get( 'cdn_driver_free' );

			case Context::ROCKETCDN_PAID_TYPE:
				return $this->container->get( 'cdn_driver_paid' );

			case Context::BYOCDN_TYPE:
				return $this->container->get( 'cdn_driver_byocdn' );

			default:
				return null;
		}
	}
}