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

SingletonRegistry::register()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 9
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 7
CRAP Score 3

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 3
eloc 6
nc 3
nop 1
dl 0
loc 9
rs 10
c 1
b 0
f 0
ccs 7
cts 7
cp 1
crap 3
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
}