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

SingletonRegistry::clear()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

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