Completed
Push — master ( d56146...ac7961 )
by Jared
01:47
created

ACLModelRequester::setCallable()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 1
1
<?php
2
3
namespace Pulsar;
4
5
/**
6
 * Holds the requesting model for ACL
7
 * permission checks.
8
 */
9
class ACLModelRequester
10
{
11
    /**
12
     * @var callable
13
     */
14
    private static $requesterCallable;
15
16
    /**
17
     * @var Model
18
     */
19
    private static $requester;
20
21
    /**
22
     * Sets the callable for getting the current requester.
23
     *
24
     * @param callable $requesterCallable
25
     */
26
    public static function setCallable(callable $requesterCallable)
27
    {
28
        self::$requesterCallable = $requesterCallable;
29
    }
30
31
    /**
32
     * Sets the current requester.
33
     *
34
     * @param Model $requester
35
     */
36
    public static function set(Model $requester)
37
    {
38
        self::$requester = $requester;
39
    }
40
41
    /**
42
     * Clears the current requester.
43
     */
44
    public static function clear()
45
    {
46
        self::$requester = null;
47
    }
48
49
    /**
50
     * Gets the current requester.
51
     *
52
     * @return Model|null
53
     */
54
    public static function get()
55
    {
56
        if (!self::$requester && self::$requesterCallable) {
57
            self::$requester = call_user_func(self::$requesterCallable);
58
        }
59
60
        return self::$requester;
61
    }
62
}
63