Completed
Push — master ( 870291...b9fe13 )
by Tomáš
03:25
created

ControllerFinder::prepareServiceKeys()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 10
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 6
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 10
ccs 6
cts 6
cp 1
rs 9.4285
c 0
b 0
f 0
cc 2
eloc 6
nc 2
nop 1
crap 2
1
<?php
2
3
declare(strict_types=1);
4
5
/*
6
 * This file is part of Symplify
7
 * Copyright (c) 2015 Tomas Votruba (http://tomasvotruba.cz).
8
 */
9
10
namespace Symplify\ControllerAutowire\HttpKernel\Controller;
11
12
use Nette\Caching\Storages\DevNullStorage;
13
use Nette\Loaders\RobotLoader;
14
use Symplify\ControllerAutowire\Contract\HttpKernel\ControllerFinderInterface;
15
16
final class ControllerFinder implements ControllerFinderInterface
17
{
18
    /**
19
     * @var string
20
     */
21
    private $namePart;
22
23 4
    public function __construct(string $namePart = 'Controller')
24
    {
25 4
        $this->namePart = $namePart;
26 4
    }
27
28
    /**
29
     * {@inheritdoc}
30
     */
31 4
    public function findControllersInDirs(array $dirs) : array
32
    {
33 4
        $robot = new RobotLoader();
34 4
        $robot->setCacheStorage(new DevNullStorage());
35 4
        foreach ($dirs as $dir) {
36 4
            $robot->addDirectory($dir);
37
        }
38 4
        $robot->ignoreDirs .= ', Tests';
39 4
        $robot->acceptFiles = '*' . $this->namePart . '.php';
40 4
        $robot->rebuild();
41
42 4
        $controllerClasses = array_keys($robot->getIndexedClasses());
43 4
        sort($controllerClasses);
44
45 4
        $controllerClasses = $this->prepareServiceKeys($controllerClasses);
46
47 4
        return $controllerClasses;
48
    }
49
50 4
    private function prepareServiceKeys(array $controllerClasses) : array
51
    {
52 4
        $controllerClassesWithKeys = [];
53 4
        foreach ($controllerClasses as $key => $controllerClass) {
54 4
            $key = strtr(strtolower($controllerClass), ['\\' => '.']);
55 4
            $controllerClassesWithKeys[$key] = $controllerClass;
56
        }
57
58 4
        return $controllerClassesWithKeys;
59
    }
60
}
61