annotate vendor/instaclick/php-webdriver/lib/WebDriver/ServiceFactory.php @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents 1fec387a4317
children
rev   line source
Chris@14 1 <?php
Chris@14 2 /**
Chris@14 3 * Copyright 2012-2017 Anthon Pang. All Rights Reserved.
Chris@14 4 *
Chris@14 5 * Licensed under the Apache License, Version 2.0 (the "License");
Chris@14 6 * you may not use this file except in compliance with the License.
Chris@14 7 * You may obtain a copy of the License at
Chris@14 8 *
Chris@14 9 * http://www.apache.org/licenses/LICENSE-2.0
Chris@14 10 *
Chris@14 11 * Unless required by applicable law or agreed to in writing, software
Chris@14 12 * distributed under the License is distributed on an "AS IS" BASIS,
Chris@14 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Chris@14 14 * See the License for the specific language governing permissions and
Chris@14 15 * limitations under the License.
Chris@14 16 *
Chris@14 17 * @package WebDriver
Chris@14 18 *
Chris@14 19 * @author Anthon Pang <apang@softwaredevelopment.ca>
Chris@14 20 */
Chris@14 21
Chris@14 22 namespace WebDriver;
Chris@14 23
Chris@14 24 /**
Chris@14 25 * WebDriver\ServiceFactory class
Chris@14 26 *
Chris@14 27 * A service factory
Chris@14 28 *
Chris@14 29 * @package WebDriver
Chris@14 30 */
Chris@14 31 final class ServiceFactory
Chris@14 32 {
Chris@14 33 /**
Chris@14 34 * singleton
Chris@14 35 *
Chris@14 36 * @var \WebDriver\ServiceFactory
Chris@14 37 */
Chris@14 38 private static $instance;
Chris@14 39
Chris@14 40 /**
Chris@14 41 * @var array
Chris@14 42 */
Chris@14 43 protected $services;
Chris@14 44
Chris@14 45 /**
Chris@14 46 * @var array
Chris@14 47 */
Chris@14 48 protected $serviceClasses;
Chris@14 49
Chris@14 50 /**
Chris@14 51 * Private constructor
Chris@14 52 */
Chris@14 53 private function __construct()
Chris@14 54 {
Chris@14 55 $this->services = array();
Chris@14 56
Chris@14 57 $this->serviceClasses = array(
Chris@14 58 'service.curl' => '\\WebDriver\\Service\\CurlService',
Chris@14 59 );
Chris@14 60 }
Chris@14 61
Chris@14 62 /**
Chris@14 63 * Get singleton instance
Chris@14 64 *
Chris@14 65 * @return \WebDriver\ServiceFactory
Chris@14 66 */
Chris@14 67 public static function getInstance()
Chris@14 68 {
Chris@14 69 if (!self::$instance) {
Chris@14 70 self::$instance = new self;
Chris@14 71 }
Chris@14 72
Chris@14 73 return self::$instance;
Chris@14 74 }
Chris@14 75
Chris@14 76 /**
Chris@14 77 * Get service
Chris@14 78 *
Chris@14 79 * @param string $serviceName Name of service
Chris@14 80 *
Chris@14 81 * @return object
Chris@14 82 */
Chris@14 83 public function getService($serviceName)
Chris@14 84 {
Chris@14 85 if (!isset($this->services[$serviceName])) {
Chris@14 86 $className = $this->serviceClasses[$serviceName];
Chris@14 87
Chris@14 88 $this->services[$serviceName] = new $className;
Chris@14 89 }
Chris@14 90
Chris@14 91 return $this->services[$serviceName];
Chris@14 92 }
Chris@14 93
Chris@14 94 /**
Chris@14 95 * Set service
Chris@14 96 *
Chris@14 97 * @param string $serviceName Name of service
Chris@14 98 * @param object $service Service instance
Chris@14 99 */
Chris@14 100 public function setService($serviceName, $service)
Chris@14 101 {
Chris@14 102 $this->services[$serviceName] = $service;
Chris@14 103 }
Chris@14 104
Chris@14 105 /**
Chris@14 106 * Override default service class
Chris@14 107 *
Chris@14 108 * @param string $serviceName Name of service
Chris@14 109 * @param string $className Name of service class
Chris@14 110 */
Chris@14 111 public function setServiceClass($serviceName, $className)
Chris@14 112 {
Chris@14 113 if (substr($className, 0, 1) !== '\\') {
Chris@14 114 $className = '\\' . $className;
Chris@14 115 }
Chris@14 116
Chris@14 117 $this->serviceClasses[$serviceName] = $className;
Chris@14 118 $this->services[$serviceName] = null;
Chris@14 119 }
Chris@14 120 }