Service   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 28
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Importance

Changes 0
Metric Value
dl 0
loc 28
rs 10
c 0
b 0
f 0
wmc 5
lcom 1
cbo 1

3 Methods

Rating   Name   Duplication   Size   Complexity  
A register() 0 5 1
A registerFactory() 0 5 1
A __callStatic() 0 9 3
1
<?php
2
3
/**
4
 * Service Module
5
 *
6
 * This module permits the user to register and retrieve a service manager
7
 * instance, one (singleton) or multiple times
8
 *
9
 * @package core
10
 * @author [email protected]
11
 * @copyright Caffeina srl - 2015 - http://caffeina.it
12
 */
13
14
class Service {
15
    use Module;
16
    private static $services = [];
17
18
    public static function register($serviceName, $serviceFactory){
19
      static::$services[$serviceName] = function(...$args) use ($serviceName, $serviceFactory) {
20
        return static::$services[$serviceName] = $serviceFactory(...$args);
21
      };
22
    }
23
24
    public static function registerFactory($serviceName, $serviceFactory){
25
        static::$services[$serviceName] = function(...$args) use ($serviceName, $serviceFactory) {
26
            return $serviceFactory(...$args);
27
        };
28
    }
29
30
    public static function __callStatic($serviceName, $serviceParameters){
31
      $servs = static::$services;
32
    	return empty($servs[$serviceName])
33
                   ? null
34
                   : (is_callable($servs[$serviceName])
35
                       ? $servs[$serviceName](...$serviceParameters)
36
                       : $servs[$serviceName]
37
                   );
38
    }
39
40
41
}
42