@@ -18,6 +18,16 @@ class Route implements IRoute
18
18
19
19
private static $ temp = [];
20
20
21
+ /**
22
+ * Destroy all the temporary
23
+ * @param void
24
+ */
25
+ public function __destruct ()
26
+ {
27
+ unset(self ::$ temp ['uri ' ]);
28
+ unset(self ::$ temp ['method ' ]);
29
+ }
30
+
21
31
/**
22
32
* Starting Point of Route class to Register URI to route
23
33
* Route::get|post|patch|delete('uri', [controller::class, 'method'])
@@ -40,11 +50,11 @@ public static function get($uri, $controller = [])
40
50
{
41
51
$ self = new static ;
42
52
43
- self ::setRoute ('GET ' , $ uri , $ controller );
44
-
45
53
self ::temp ('uri ' , $ uri );
46
54
self ::temp ('method ' , 'GET ' );
47
55
56
+ self ::setRoute ('GET ' , $ uri , $ controller );
57
+
48
58
return $ self ;
49
59
}
50
60
@@ -57,11 +67,11 @@ public static function post($uri, $controller = [])
57
67
{
58
68
$ self = new static ;
59
69
60
- self ::setRoute ('POST ' , $ uri , $ controller );
61
-
62
70
self ::temp ('uri ' , $ uri );
63
71
self ::temp ('method ' , 'POST ' );
64
72
73
+ self ::setRoute ('POST ' , $ uri , $ controller );
74
+
65
75
return $ self ;
66
76
}
67
77
@@ -75,11 +85,11 @@ public static function patch($uri, $controller = [])
75
85
{
76
86
$ self = new static ;
77
87
78
- self ::setRoute ('PATCH ' , $ uri , $ controller );
79
-
80
88
self ::temp ('uri ' , $ uri );
81
89
self ::temp ('method ' , 'PATCH ' );
82
90
91
+ self ::setRoute ('PATCH ' , $ uri , $ controller );
92
+
83
93
return $ self ;
84
94
}
85
95
@@ -92,22 +102,35 @@ public static function delete($uri, $controller = [])
92
102
{
93
103
$ self = new static ;
94
104
95
- self ::setRoute ('DELETE ' , $ uri , $ controller );
96
-
97
105
self ::temp ('uri ' , $ uri );
98
106
self ::temp ('method ' , 'DELETE ' );
99
107
108
+ self ::setRoute ('DELETE ' , $ uri , $ controller );
109
+
100
110
return $ self ;
101
111
}
102
112
103
113
/**
104
- * Register multiple route into same middleware
114
+ * Starting point to register multiple routes into same middleware
105
115
* @param callable $callback
106
- * @return void
116
+ * @return self
117
+ */
118
+ public static function group ($ middleware )
119
+ {
120
+ $ self = new static ;
121
+ self ::temp ('middleware ' , $ middleware );
122
+ return $ self ;
123
+ }
124
+
125
+ /**
126
+ * Register multiple routes into same middleware
107
127
*/
108
- public static function group (callable $ callback )
128
+ public function by (callable $ callback )
109
129
{
130
+ self ::temp ('group_middleware ' , self ::temp ('middleware ' ));
110
131
call_user_func ($ callback );
132
+ unset(self ::$ temp ['group_middleware ' ]);
133
+ unset(self ::$ temp ['middleware ' ]);
111
134
}
112
135
113
136
/**
@@ -128,6 +151,9 @@ protected static function setRoute(string $method, string $uri, array|callable $
128
151
"action " => $ controller [1 ],
129
152
];
130
153
}
154
+ if (self ::temp ('middleware ' ) || self ::temp ('group_middleware ' )) {
155
+ self ::setMiddleware ();
156
+ }
131
157
}
132
158
133
159
/**
@@ -183,15 +209,15 @@ public static function Redirect($name, array $data = null)
183
209
* @param string $middleware MiddlewareName
184
210
* @return this
185
211
*/
186
- public static function middleware ($ middleware )
212
+ public function middleware ($ middleware )
187
213
{
188
- $ self = new static ;
189
-
190
214
self ::temp ('middleware ' , $ middleware );
191
215
192
- self ::setMiddleware ();
216
+ if (self ::temp ('uri ' )) {
217
+ self ::setMiddleware ();
218
+ }
193
219
194
- return $ self ;
220
+ return $ this ;
195
221
}
196
222
197
223
/**
@@ -200,12 +226,18 @@ public static function middleware($middleware)
200
226
*/
201
227
protected static function setMiddleware ()
202
228
{
203
- self ::$ route [self ::$ temp ['method ' ]][self ::$ temp ['uri ' ]] = array_merge (
204
- ["middleware " => self ::$ temp ['middleware ' ]],
205
- self ::$ route [self ::$ temp ['method ' ]][self ::$ temp ['uri ' ]]
206
- );
207
-
208
- unset(self ::$ temp ['middleware ' ]);
229
+ if (self ::temp ('group_middleware ' )) {
230
+ self ::$ route [self ::$ temp ['method ' ]][self ::$ temp ['uri ' ]] = array_merge (
231
+ ["middleware " => self ::$ temp ['group_middleware ' ]],
232
+ self ::$ route [self ::$ temp ['method ' ]][self ::$ temp ['uri ' ]]
233
+ );
234
+ } else {
235
+ self ::$ route [self ::$ temp ['method ' ]][self ::$ temp ['uri ' ]] = array_merge (
236
+ ["middleware " => self ::$ temp ['middleware ' ]],
237
+ self ::$ route [self ::$ temp ['method ' ]][self ::$ temp ['uri ' ]]
238
+ );
239
+ unset(self ::$ temp ['middleware ' ]);
240
+ }
209
241
}
210
242
211
243
/**
0 commit comments