Passed
Push — master ( 491c64...c15fe8 )
by Nícollas
12:23
created

Route::fallback()   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|string $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|string $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|string $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|string $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 string $redirect
110
     * @param int $httpCode
111
     * 
112
     * @return \MinasRouter\Router\RouteManager
113
     */
114
    public static function redirect(String $uri, String $redirect, Int $httpCode = 302)
115
    {
116
        return self::$collection->addRedirectRoute($uri, $redirect, $httpCode);
117
    }
118
119
    /**
120
     * @param string $uri
121
     * @param string $redirect
122
     * 
123
     * @return \MinasRouter\Router\RouteManager
124
     */
125
    public static function permanentRedirect(String $uri, String $redirect)
126
    {
127
        return self::$collection->addRedirectRoute($uri, $redirect, 301);
128
    }
129
130
    /**
131
     * @param string $uri
132
     * @param \Closure|array $callback
133
     * 
134
     * @return \MinasRouter\Router\RouteManager
135
     */
136
    public static function match(Array $methods, String $uri, $callback)
137
    {
138
        return self::$collection->addMultipleHttpRoutes($uri, $callback, $methods);
139
    }
140
141
    /**
142
     * @param string $method
143
     * @param array $arguments
144
     * 
145
     * @return void
146
     */
147
    public static function __callStatic($method, $arguments)
148
    {
149
        return self::$collection->{$method}(...$arguments);
150
    }
151
152
    /**
153
     * Execute the routers.
154
     * 
155
     * @return void
156
     */
157
    public static function execute()
158
    {
159
        self::$collection->run();
160
    }
161
162
    /**
163
     * @param \Closure|array|string
164
     * 
165
     * @return void
166
     */
167
    public static function fallback($callback)
168
    {
169
        self::$collection->addRoute("GET", "/404", $callback)->name('fallback');
170
    }
171
}
172