/** Sorts current routes according to path and parameters */ protected function sortRoutesByComplexity() { usort($this->routes, function ($a, $b) { $a = $a->pattern; $b = $b->pattern; $pi = AbstractRoute::PARAM_IDENTIFIER; //Compare similarity and ocurrences of "/" if (Router::compareRoutePatterns($a, $b, '/')) { return 1; //Compare similarity and ocurrences of /* } elseif (Router::compareRoutePatterns($a, $b, $pi)) { return -1; //Hard fallback for consistency } else { return 1; } }); }