From e2af9b3fc42a751e0091020a9b7b1c0ecd6fa38b Mon Sep 17 00:00:00 2001 From: Jordi Boggiano Date: Fri, 13 Apr 2012 10:48:25 +0200 Subject: [PATCH] Sort equal routes by HTTP method --- Extractor/ApiDocExtractor.php | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/Extractor/ApiDocExtractor.php b/Extractor/ApiDocExtractor.php index 0c4abb5..e9d3de1 100644 --- a/Extractor/ApiDocExtractor.php +++ b/Extractor/ApiDocExtractor.php @@ -69,10 +69,19 @@ class ApiDocExtractor } } - usort($array, function($a, $b) { + $methodOrder = array('GET', 'POST', 'PUT', 'DELETE'); + + usort($array, function($a, $b) use ($methodOrder) { if ($a['resource'] === $b['resource']) { if ($a['route']->getPattern() === $b['route']->getPattern()) { - return strcmp($a['route']->getRequirement('_method'), $b['route']->getRequirement('_method')); + $methodA = array_search($a['route']->getRequirement('_method'), $methodOrder); + $methodB = array_search($b['route']->getRequirement('_method'), $methodOrder); + + if ($methodA === $methodB) { + return strcmp($a['route']->getRequirement('_method'), $b['route']->getRequirement('_method')); + } + + return $methodA > $methodB ? 1 : -1; } return strcmp($a['route']->getPattern(), $b['route']->getPattern());