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