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

VisibilityTrait   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 30
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 1

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
dl 0
loc 30
ccs 12
cts 12
cp 1
rs 10
c 0
b 0
f 0
wmc 5
lcom 0
cbo 1

1 Method

Rating   Name   Duplication   Size   Complexity  
B getVisibility() 0 23 5
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