@@ -40,12 +40,17 @@ class Router
40
40
*/
41
41
protected $ patterns = [
42
42
'{a} ' => '([^/]+) ' ,
43
- '{d} ' => '([0-9]+) ' ,
44
- '{i} ' => '([0-9]+) ' ,
45
- '{s} ' => '([a-zA-Z]+) ' ,
46
- '{w} ' => '([a-zA-Z0-9_]+) ' ,
47
- '{u} ' => '([a-zA-Z0-9_-]+) ' ,
48
- '{*} ' => '(.*) '
43
+ '{d} ' => '(\d+) ' ,
44
+ '{i} ' => '(\d+) ' ,
45
+ '{s} ' => '(\w+) ' ,
46
+ '{u} ' => '([\w\-_]+) ' ,
47
+ '{*} ' => '(.*) ' ,
48
+ ':id ' => '(\d+) ' ,
49
+ ':number ' => '(\d+) ' ,
50
+ ':any ' => '([^/]+) ' ,
51
+ ':all ' => '(.*) ' ,
52
+ ':string ' => '(\w+) ' ,
53
+ ':slug ' => '([\w\-_]+) ' ,
49
54
];
50
55
51
56
/**
@@ -188,7 +193,7 @@ public function __call($method, $params)
188
193
$ callback = $ params [2 ];
189
194
}
190
195
191
- if (strstr ($ route , '{ ' )) {
196
+ if (strstr ($ route , ': ' ) || strstr ( $ route , ' { ' )) {
192
197
$ route1 = $ route2 = '' ;
193
198
foreach (explode ('/ ' , $ route ) as $ key => $ value ) {
194
199
if ($ value != '' ) {
@@ -263,15 +268,15 @@ public function pattern($pattern, $attr = null)
263
268
{
264
269
if (is_array ($ pattern )) {
265
270
foreach ($ pattern as $ key => $ value ) {
266
- if (! in_array (' { ' . $ key . ' } ' , array_keys ($ this ->patterns ))) {
267
- $ this ->patterns [' { ' . $ key . ' } ' ] = '( ' . $ value . ') ' ;
271
+ if (! in_array ($ key , array_keys ($ this ->patterns ))) {
272
+ $ this ->patterns [$ key ] = '( ' . $ value . ') ' ;
268
273
} else {
269
274
return $ this ->exception ($ key . ' pattern cannot be changed. ' );
270
275
}
271
276
}
272
277
} else {
273
- if (! in_array (' { ' . $ pattern . ' } ' , array_keys ($ this ->patterns ))) {
274
- $ this ->patterns [' { ' . $ pattern . ' } ' ] = '( ' . $ attr . ') ' ;
278
+ if (! in_array ($ pattern , array_keys ($ this ->patterns ))) {
279
+ $ this ->patterns [$ pattern ] = '( ' . $ attr . ') ' ;
275
280
} else {
276
281
return $ this ->exception ($ pattern . ' pattern cannot be changed. ' );
277
282
}
@@ -327,7 +332,7 @@ public function run()
327
332
foreach ($ this ->routes as $ data ) {
328
333
$ route = $ data ['route ' ];
329
334
330
- if (strpos ($ route , '{ ' ) !== false ) {
335
+ if (strstr ( $ route , ' : ' ) !== false || strpos ($ route , '{ ' ) !== false ) {
331
336
$ route = str_replace ($ searches , $ replaces , $ route );
332
337
}
333
338
0 commit comments