Completed
Pull Request — master (#37)
by Alberto
03:13
created

VisibilityTrait::getVisibility()   B

Complexity

Conditions 5
Paths 4

Size

Total Lines 23
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 12
CRAP Score 5

Importance

Changes 0
Metric Value
cc 5
eloc 13
nc 4
nop 1
dl 0
loc 23
ccs 12
cts 12
cp 1
crap 5
rs 8.5906
c 0
b 0
f 0
1
<?php
2
declare(strict_types=1);
3
4
namespace Moka\Generator\Template;
5
6
use Moka\Exception\InvalidArgumentException;
7
8
/**
9
 * Trait VisibilityTrait
10
 * @package Moka\Generator\Template
11
 */
12
trait VisibilityTrait
13
{
14
    /**
15
     * @param \Reflector $reflector
16
     * @return string
17
     */
18 14
    protected static function getVisibility(\Reflector $reflector): string
19
    {
20
        if (
21 14
            !$reflector instanceof \ReflectionMethod &&
22 14
            !$reflector instanceof \ReflectionProperty
23
        ) {
24 1
            throw new InvalidArgumentException(
25 1
                sprintf(
26 1
                    'Reflector must be an instance of "%s" or "%s"',
27 1
                    \ReflectionMethod::class,
28 1
                    \ReflectionProperty::class
29
                )
30
            );
31
        }
32
33 13
        foreach (['Public', 'Protected', 'Private'] as $visibility) {
34 13
            if ($reflector->{'is' . $visibility}()) {
35 13
                return strtolower($visibility);
36
            }
37
        }
38
39 1
        throw new \RuntimeException('Witness me!');
40
    }
41
}
42