From 5c03cc9d9ad24a294daac0d344ce8e4070c4d096 Mon Sep 17 00:00:00 2001 From: jcheron Date: Mon, 1 Jul 2019 02:26:18 +0200 Subject: [PATCH] [skip ci] Sort routes by priority (router cache init) Fix https://github.com/phpMv/ubiquity/issues/54 --- src/Ubiquity/cache/parser/ControllerParser.php | 7 +------ src/Ubiquity/cache/traits/RouterCacheTrait.php | 11 ++++++++++- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/Ubiquity/cache/parser/ControllerParser.php b/src/Ubiquity/cache/parser/ControllerParser.php index 9cd1484d3..d7e8ff184 100644 --- a/src/Ubiquity/cache/parser/ControllerParser.php +++ b/src/Ubiquity/cache/parser/ControllerParser.php @@ -6,7 +6,6 @@ use Ubiquity\utils\base\UString; use Ubiquity\annotations\router\RouteAnnotation; use Ubiquity\cache\ClassUtils; -use Ubiquity\utils\base\UArray; /** * Scans a controller to detect routes defined by annotations. @@ -14,7 +13,7 @@ * This class is part of Ubiquity * * @author jcheron - * @version 1.0.6 + * @version 1.0.7 * */ class ControllerParser { @@ -110,10 +109,6 @@ public function asArray() { self::parseRouteArray ( $result, $this->controllerClass, $params, $arrayAnnotsMethod ["method"], $method, $prefix, $httpMethods ); } } - uasort ( $result, function ($item1, $item2) { - return UArray::getRecursive ( $item2, "priority", 0 ) <=> UArray::getRecursive ( $item1, "priority", 0 ); - } ); - UArray::removeRecursive ( $result, "priority" ); return $result; } diff --git a/src/Ubiquity/cache/traits/RouterCacheTrait.php b/src/Ubiquity/cache/traits/RouterCacheTrait.php index 229eb2942..2efc2f775 100644 --- a/src/Ubiquity/cache/traits/RouterCacheTrait.php +++ b/src/Ubiquity/cache/traits/RouterCacheTrait.php @@ -16,7 +16,7 @@ * This class is part of Ubiquity * * @author jcheron - * @version 1.0.4 + * @version 1.0.5 * @property \Ubiquity\cache\system\AbstractDataCache $cache * */ @@ -52,9 +52,18 @@ private static function parseControllerFiles(&$config, $silent = false) { } } } + self::sortByPriority ( $routes ['default'] ); + self::sortByPriority ( $routes ['rest'] ); return $routes; } + protected static function sortByPriority(&$array) { + uasort ( $array, function ($item1, $item2) { + return UArray::getRecursive ( $item2, "priority", 0 ) <=> UArray::getRecursive ( $item1, "priority", 0 ); + } ); + UArray::removeRecursive ( $array, "priority" ); + } + private static function initRouterCache(&$config, $silent = false) { $routes = self::parseControllerFiles ( $config, $silent ); self::$cache->store ( "controllers/routes.default", "return " . UArray::asPhpArray ( $routes ["default"], "array" ) . ";", 'controllers' );