X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs-website;a=blobdiff_plain;f=vendor%2Finstaclick%2Fphp-webdriver%2Flib%2FWebDriver%2FServiceFactory.php;fp=vendor%2Finstaclick%2Fphp-webdriver%2Flib%2FWebDriver%2FServiceFactory.php;h=bf03708c7d065995e3e57ff2bc441dd3a8ca59cc;hp=0000000000000000000000000000000000000000;hb=1270d9129ce8f27c9b28b10518e32132c58e0aca;hpb=c27c0f0cdaa3f354b1fe54a56ae7e854be6e3f68 diff --git a/vendor/instaclick/php-webdriver/lib/WebDriver/ServiceFactory.php b/vendor/instaclick/php-webdriver/lib/WebDriver/ServiceFactory.php new file mode 100755 index 000000000..bf03708c7 --- /dev/null +++ b/vendor/instaclick/php-webdriver/lib/WebDriver/ServiceFactory.php @@ -0,0 +1,120 @@ + + */ + +namespace WebDriver; + +/** + * WebDriver\ServiceFactory class + * + * A service factory + * + * @package WebDriver + */ +final class ServiceFactory +{ + /** + * singleton + * + * @var \WebDriver\ServiceFactory + */ + private static $instance; + + /** + * @var array + */ + protected $services; + + /** + * @var array + */ + protected $serviceClasses; + + /** + * Private constructor + */ + private function __construct() + { + $this->services = array(); + + $this->serviceClasses = array( + 'service.curl' => '\\WebDriver\\Service\\CurlService', + ); + } + + /** + * Get singleton instance + * + * @return \WebDriver\ServiceFactory + */ + public static function getInstance() + { + if (!self::$instance) { + self::$instance = new self; + } + + return self::$instance; + } + + /** + * Get service + * + * @param string $serviceName Name of service + * + * @return object + */ + public function getService($serviceName) + { + if (!isset($this->services[$serviceName])) { + $className = $this->serviceClasses[$serviceName]; + + $this->services[$serviceName] = new $className; + } + + return $this->services[$serviceName]; + } + + /** + * Set service + * + * @param string $serviceName Name of service + * @param object $service Service instance + */ + public function setService($serviceName, $service) + { + $this->services[$serviceName] = $service; + } + + /** + * Override default service class + * + * @param string $serviceName Name of service + * @param string $className Name of service class + */ + public function setServiceClass($serviceName, $className) + { + if (substr($className, 0, 1) !== '\\') { + $className = '\\' . $className; + } + + $this->serviceClasses[$serviceName] = $className; + $this->services[$serviceName] = null; + } +}