Passed
Pull Request — master (#28)
by Fran
08:31
created

SingletonRegistry   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 33
Duplicated Lines 0 %

Test Coverage

Coverage 81.25%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 15
dl 0
loc 33
rs 10
c 1
b 0
f 0
ccs 13
cts 16
cp 0.8125
wmc 6

4 Methods

Rating   Name   Duplication   Size   Complexity  
A register() 0 9 3
A get() 0 4 1
A drop() 0 4 1
A clear() 0 4 1
1
<?php
2
3
namespace PSFS\base;
4
5
class SingletonRegistry
6
{
7
    const CONTEXT_SESSION = 'PSFS_CONTEXT_SESSION';
8
    private static $instances = [];
9
10 13
    public static function register($instance)
11
    {
12 13
        $currentContext = $_SERVER[self::CONTEXT_SESSION] ?? self::CONTEXT_SESSION;
13 13
        if ($instance) {
14 13
            if (!isset(self::$instances[$currentContext])) {
15 1
                self::$instances[$currentContext] = [];
16
            }
17 13
            $class = get_class($instance);
18 13
            self::$instances[$currentContext][$class] = $instance;
19
        }
20
    }
21
22 51
    public static function get($class)
23
    {
24 51
        $currentContext = $_SERVER[self::CONTEXT_SESSION] ?? self::CONTEXT_SESSION;
25 51
        return self::$instances[$currentContext][$class] ?? null;
26
    }
27
28
    public static function clear()
29
    {
30
        $currentContext = $_SERVER[self::CONTEXT_SESSION] ?? self::CONTEXT_SESSION;
31
        unset(self::$instances[$currentContext]);
32
    }
33
34 8
    public static function drop($class)
35
    {
36 8
        $currentContext = $_SERVER[self::CONTEXT_SESSION] ?? self::CONTEXT_SESSION;
37 8
        unset(self::$instances[$currentContext][$class]);
38
    }
39
}