Completed
Push — master ( a2ead6...3e82b5 )
by Dmitry
03:13
created

Meta::run()   C

Complexity

Conditions 7
Paths 15

Size

Total Lines 28
Code Lines 18

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 17
CRAP Score 7

Importance

Changes 0
Metric Value
dl 0
loc 28
ccs 17
cts 17
cp 1
rs 6.7272
c 0
b 0
f 0
cc 7
eloc 18
nc 15
nop 1
crap 7
1
<?php
2
3
namespace Basis\Job\Module;
4
5
use Basis\Filesystem;
6
use Basis\Job;
7
use ReflectionClass;
8
use ReflectionMethod;
9
10
class Meta extends Job
11
{
12 4
    public function run(Filesystem $fs)
13
    {
14 4
        $routes = [];
15 4
        foreach ($fs->listClasses('Controller') as $class) {
16 4
            $nick = substr(strtolower($class), 11);
17 4
            $methods = (new ReflectionClass($class))->getMethods(ReflectionMethod::IS_PUBLIC);
18 4
            foreach ($methods as $method) {
19 4
                if ($method->isConstructor()) {
20 4
                    continue;
21
                }
22 4
                if ($method->name == '__process') {
23 4
                    $routes[] = $nick.'/*';
24
                } else {
25 4
                    $routes[] = $nick.'/'.$method->name;
26
                }
27
            }
28
        }
29
30 4
        $jobs = [];
31 4
        foreach ($fs->listClasses('Job') as $class) {
32 4
            $reflection = new ReflectionClass($class);
33 4
            if (!$reflection->isAbstract()) {
34 4
                $jobs[] = str_replace('\\', '.', substr(strtolower($class), 4));
35
            }
36
        }
37
38 4
        return compact('routes', 'jobs');
39
    }
40
}
41