Passed
Push — master ( f6ade7...00655e )
by Nícollas
10:13 queued 12s
created

Route::middleware()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 1
c 0
b 0
f 0
nc 1
nop 1
dl 0
loc 3
rs 10
1
<?php
2
3
namespace MinasRouter\Router;
4
5
use MinasRouter\Traits\RouteUtils;
6
use MinasRouter\Router\RouteCollection;
7
8
abstract class Route extends RouteCollection
9
{
10
    use RouteUtils;
11
12
    /** @var string */
13
    protected static $projectUrl;
14
15
    /** @var string */
16
    protected static $separator = '@';
17
18
    /** @var object */
19
    protected $obMiddleware;
20
21
    /**
22
     * @param string $projectUrl
23
     * @param string $separator = null
24
     * 
25
     * @return void
26
     */
27
    public static function start(String $projectUrl, String $separator = null): void
28
    {
29
        self::$projectUrl = rtrim($projectUrl, '/');
30
31
        if ($separator) {
32
            self::$separator = $separator;
33
        }
34
35
        self::$collection = new parent(
36
            self::$separator,
37
            self::$projectUrl
38
        );
39
    }
40
41
    /**
42
     * @param string $uri
43
     * @param \Closure|array|string $callback
44
     * 
45
     * @return \MinasRouter\Router\RouteManager
46
     */
47
    public static function get(String $uri, $callback)
48
    {
49
        return self::$collection->addRoute("GET", $uri, $callback);
50
    }
51
52
    /**
53
     * @param string $uri
54
     * @param \Closure|array $callback
55
     * 
56
     * @return \MinasRouter\Router\RouteManager
57
     */
58
    public static function post(String $uri, $callback)
59
    {
60
        return self::$collection->addRoute("POST", $uri, $callback);
61
    }
62
63
    /**
64
     * @param string $uri
65
     * @param \Closure|array $callback
66
     * 
67
     * @return \MinasRouter\Router\RouteManager
68
     */
69
    public static function put(String $uri, $callback)
70
    {
71
        return self::$collection->addRoute("PUT", $uri, $callback);
72
    }
73
74
    /**
75
     * @param string $uri
76
     * @param \Closure|array $callback
77
     * 
78
     * @return \MinasRouter\Router\RouteManager
79
     */
80
    public static function patch(String $uri, $callback)
81
    {
82
        return self::$collection->addRoute("PATCH", $uri, $callback);
83
    }
84
85
    /**
86
     * @param string $uri
87
     * @param \Closure|array $callback
88
     * 
89
     * @return \MinasRouter\Router\RouteManager
90
     */
91
    public static function delete(String $uri, $callback)
92
    {
93
        return self::$collection->addRoute("DELETE", $uri, $callback);
94
    }
95
96
    /**
97
     * @param string $uri
98
     * @param \Closure|array $callback
99
     * 
100
     * @return \MinasRouter\Router\RouteManager
101
     */
102
    public static function any(String $uri, $callback)
103
    {
104
        return self::$collection->addMultipleHttpRoutes($uri, $callback);
105
    }
106
107
    /**
108
     * @param string $uri
109
     * @param \Closure|array $callback
110
     * 
111
     * @return \MinasRouter\Router\RouteManager
112
     */
113
    public static function redirect(String $uri, String $redirect, Int $httpCode = 302)
114
    {
115
        return self::$collection->addRedirectRoute($uri, $redirect, $httpCode);
116
    }
117
118
    /**
119
     * @param string $uri
120
     * @param \Closure|array $callback
121
     * 
122
     * @return \MinasRouter\Router\RouteManager
123
     */
124
    public static function permanentRedirect(String $uri, String $redirect)
125
    {
126
        return self::$collection->addRedirectRoute($uri, $redirect, 301);
127
    }
128
129
    /**
130
     * @param string $uri
131
     * @param \Closure|array $callback
132
     * 
133
     * @return \MinasRouter\Router\RouteManager
134
     */
135
    public static function match(array $methods, String $uri, $callback)
136
    {
137
        return self::$collection->addMultipleHttpRoutes($uri, $callback, $methods);
138
    }
139
140
    /**
141
     * @param string $method
142
     * @param array $arguments
143
     * 
144
     * @return void
145
     */
146
    public static function __callStatic($method, $arguments)
147
    {
148
        return self::$collection->{$method}(...$arguments);
149
    }
150
151
    /**
152
     * Execute the routers.
153
     * 
154
     * @return void
155
     */
156
    public static function execute()
157
    {
158
        self::$collection->run();
159
    }
160
}
161