Completed
Push — master ( 867c5a...b7baf0 )
by ARCANEDEV
14:52
created

Policy::policies()   A

Complexity

Conditions 2
Paths 1

Size

Total Lines 15
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 6

Importance

Changes 0
Metric Value
cc 2
eloc 9
nc 1
nop 0
dl 0
loc 15
ccs 0
cts 12
cp 0
crap 6
rs 9.4285
c 0
b 0
f 0
1
<?php namespace Arcanedev\Support\Bases;
2
3
use Arcanedev\Support\Exceptions\MissingPolicyException;
4
use Illuminate\Support\Str;
5
6
/**
7
 * Class     Policy
8
 *
9
 * @package  Arcanedev\Support\Bases
10
 * @author   ARCANEDEV <[email protected]>
11
 */
12
abstract class Policy
13
{
14
    /* -----------------------------------------------------------------
15
     |  Main Methods
16
     | -----------------------------------------------------------------
17
     */
18
    /**
19
     * Get the policies.
20
     *
21
     * @return array
22
     */
23
    public static function policies()
24
    {
25
        $values = array_values(
26
            (new \ReflectionClass($instance = new static))->getConstants()
27
        );
28
29
        return array_map(function ($constant) use ($instance) {
30
            $method = Str::camel(last(explode('.', $constant)).'Policy');
31
32
            if ( ! method_exists($instance, $method))
33
                throw new MissingPolicyException("Missing policy [$method] method in ".get_class($instance).".");
34
35
            return $method;
36
        }, array_combine($values, $values));
37
    }
38
}
39