@@ -334,22 +334,24 @@ protected function getBestRoute($routes) {
334
334
// order matching routes by number of parameters
335
335
$ method = $ this ->getMethod ();
336
336
usort ($ routes , function ($ a , $ b ) use ($ method ) {
337
- $ numParamsA = $ a ['numPathParameters ' ];
338
- $ numParamsB = $ b ['numPathParameters ' ];
339
- if ($ numParamsA == $ numParamsB ) {
340
- $ numPatternsA = $ a ['numPathPatterns ' ];
341
- $ numPatternsB = $ b ['numPathPatterns ' ];
342
- if ($ numPatternsA == $ numPatternsB ) {
343
- $ hasMethodA = in_array ($ method , $ a ['methods ' ]);
344
- $ hasMethodB = in_array ($ method , $ b ['methods ' ]);
345
- return ($ hasMethodA && !$ hasMethodB ) ? -1 :
346
- ((!$ hasMethodA && $ hasMethodB ) ? 1 : 0 );
337
+ $ hasMethodA = in_array ($ method , $ a ['methods ' ]);
338
+ $ hasMethodB = in_array ($ method , $ b ['methods ' ]);
339
+ if ($ hasMethodA && $ hasMethodB ) {
340
+ $ numParamsA = $ a ['numPathParameters ' ];
341
+ $ numParamsB = $ b ['numPathParameters ' ];
342
+ if ($ numParamsA == $ numParamsB ) {
343
+ $ numPatternsA = $ a ['numPathPatterns ' ];
344
+ $ numPatternsB = $ b ['numPathPatterns ' ];
345
+ if ($ numPatternsA == $ numPatternsB ) {
346
+ return 0 ;
347
+ }
348
+ // more patterns is more specific
349
+ return ($ numPatternsA < $ numPatternsB ) ? 1 : -1 ;
347
350
}
348
- // more patterns is more specific
349
- return ($ numPatternsA < $ numPatternsB ) ? 1 : -1 ;
351
+ // less parameters is more specific
352
+ return ($ numParamsA > $ numParamsB ) ? 1 : -1 ;
350
353
}
351
- // less parameters is more specific
352
- return ($ numParamsA > $ numParamsB ) ? 1 : -1 ;
354
+ return ($ hasMethodA && !$ hasMethodB ) ? -1 : 1 ;
353
355
});
354
356
355
357
if (self ::$ logger ->isDebugEnabled ()) {
0 commit comments