Test Failed
Push — master ( 614e1a...5c1cf2 )
by gt9000
13:11
created

RouteGenerator   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 38
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 0

Importance

Changes 0
Metric Value
dl 0
loc 38
rs 10
c 0
b 0
f 0
wmc 3
lcom 0
cbo 0

1 Method

Rating   Name   Duplication   Size   Complexity  
B combineVarRoutes() 0 29 3
1
<?php
2
3
namespace zqhong\route;
4
5
class RouteGenerator
6
{
7
    /**
8
     * 将多个独立的动态路由表达式合并为一个
9
     *
10
     * @param array $varRoutes
11
     * @return array|bool
12
     */
13
    public function combineVarRoutes($varRoutes)
14
    {
15
        if (empty($varRoutes)) {
16
            return false;
17
        }
18
19
        $routeMap = $regexes = [];
20
        $numGroups = 0;
21
22
        /** @var Route $route */
23
        foreach ($varRoutes as $route) {
24
            $numVariables = count($route->params);
25
            $numGroups = max($numGroups, $numVariables);
26
27
            $regexes[] = $route->route . str_repeat('()', $numGroups - $numVariables);
28
            $routeMap[$numGroups + 1] = [
29
                'handler' => $route->handler,
30
                'params' => $route->params,
31
            ];
32
33
            ++$numGroups;
34
        }
35
36
        $regex = sprintf('~^(?|%s)$~', implode('|', $regexes));
37
        return [
38
            'regex' => $regex,
39
            'routeMap' => $routeMap,
40
        ];
41
    }
42
}
43