2017-11-12 5 views
0

저는 간단한 라우터를 RESTful API로 재 구축하기위한 기초로 여기 코드 (https://github.com/gregdel/php-router)를 사용하고 있습니다.요청이 하나 이상의 경로와 일치해야합니까?

router.php (코드 스 니펫 참조)의 49-52 행 사이에서 개발자가 단일 요청 (메소드 및 패턴)에 대해 여러 일치를 암시하는 루프를 사용합니다.

내 질문은 메소드/패턴에 대해 하나 이상의 일치가 있어야합니까? 내 이해는 이것이 결코 일어나서는 안된다.

어떤 상황에서 그렇습니까? 이 기능에

//Run the matching routes 
foreach ($this->_matchingRoutes as $route) { 
    $route->run(); 
} 
+1

이상한 결정 인 것 같습니다. 9 개의 별을 가진 "더 이상 유지 관리되지 않는"상태의 Github 프로젝트에서 간단한 라우터를 기반으로하지는 않을 것입니다. – ceejayoz

+1

왜 Repo가 더 이상 유지 관리되지 않고 5 년이 경과했는지 궁금합니다. –

+2

[Macaw] (https://github.com/noahbuscher/Macaw)는 코드 150 줄로 유지되며, 찾은 라이브러리와 같이 즉시 적색 플래그가 훨씬 적습니다. – ceejayoz

답변

1

봐 :

private function _findMatchingPattern($routes, $URI) { 
 
    //Reset the matching pattern array 
 
\t $this->_matchingRoutes = array(); 
 
    foreach ($routes as $route) { 
 
\t \t if ($route->patternMatches($URI)) 
 
\t \t \t array_push($this->_matchingRoutes, $route); 
 
\t } 
 
}
$ 경로 배열이 여러 루트가 아닌 하나를 포함 할 수있다. 그런 다음 몇 가지 일치 항목이있을 수 있습니다.

+0

나는이 코드가 다중 일치로 이어질 수 있음을 이해했다. 나의 질문에 대한 @ceejayoz와 다른 주석가들이 고려하지 않은 유효한 점을 만들었지 만, 나의 질문은 더 논리적으로 왜 일어 났을 까? –

+1

@OliverGiess는 결코 일어나지 않을 것입니다. 제 대답에서 방금 $ this -> _ matchingRoutes가 여러 요소를 포함 할 수있는 이유를 설명했습니다. –