Completed
Pull Request — master (#139)
by Kévin
21:00 queued 02:16
created

ConfigurablePassTrait::getName()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 3
nc 1
nop 0
dl 0
loc 6
ccs 3
cts 3
cp 1
crap 1
rs 9.4285
c 0
b 0
f 0
1
<?php
2
/**
3
 * @author Kévin Gomez https://github.com/K-Phoen <[email protected]>
4
 */
5
6
namespace PHPSA\Analyzer\Helper;
7
8
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
9
10
trait ConfigurablePassTrait
11
{
12
    /**
13
     * {@inheritdoc}
14
     */
15 1
    public static function getName()
16
    {
17 1
        $fqcnParts = explode('\\', __CLASS__);
18
19 1
        return self::convertToSnakeCase(end($fqcnParts));
20
    }
21
22
    /**
23
     * {@inheritdoc}
24
     */
25 1
    public static function getConfiguration()
26
    {
27 1
        $treeBuilder = new TreeBuilder();
28
29 1
        return $treeBuilder->root(self::getName())
30 1
            ->canBeDisabled()
31 1
        ;
32
    }
33
34
    /**
35
     * @param string $string
36
     * @return string
37
     */
38 1
    private static function convertToSnakeCase($string)
39
    {
40 1
        $snakeCasedName = '';
41 1
        $len = strlen($string);
42 1
        for ($i = 0; $i < $len; ++$i) {
43 1
            if ($i !== 0 && ctype_upper($string[$i])) {
44 1
                $snakeCasedName .= '_'.strtolower($string[$i]);
45 1
            } else {
46 1
                $snakeCasedName .= strtolower($string[$i]);
47
            }
48 1
        }
49 1
        return $snakeCasedName;
50
    }
51
}
52