가벼운 MVC 프레임 워크 용 URL 라우터 클래스를 만드는 중입니다. 나는 간단한 배열 기반의 시스템을 구현하고 어떤 매개 변수가 일련의 루프를 통해 어디서 왔는지 등을 파악했다. 장고 책을 읽었고 패턴을 일치시키는 시스템과 마찬가지로 클래스와 메소드를 호출하면 패턴 일치. 잘 작동하지만 두 개의 다른 패턴을 매핑하는 데 집착하고 있으며 정규식에서 최고가 아니라고합니다. preg_match - regex - 명명 된 하위 패턴과 동일한 문자열로 시작하는 패턴을 구별합니다.
은 그래서 URL 패턴 및 해당 클래스/메소드 배열이 있습니다'/^\/users\/(?P<username>\w+)$/' => array('class' => 'userController', 'method' => 'detailUserAction'),
'/^\/users\/update$/' => array('class' => 'userController', 'method' => 'updateUserAction'),
을 첫 번째 패턴은 항상 함께/사용자 시작하고 이후에 다른 뭔가가 아무것도 전에 일치합니다.
나중에 코드에서 나는 배열을 통해 반복하고이 코드를 실행 오전 :
if (preg_match($urlPattern, $pathString, $matches)){
$this->invokeObject($command, $matches);
exit;
}
나는이 두 URL을 구분하는 데 사용할 수있는 패턴에 어떤 아이디어?
한 사용자/사용자 이름
/이고 다른 하나는 사용자/난 그냥 배열의 순서로 먼저 다른 사람을 항상 포함 할 수 있습니다 생각
를 업데이트/인, 나의 최선의 선택이다?
예. 특정 라우터를 먼저 (예 :/users/update) 넣고 끝에 모든 라우터를 넣으십시오 (예 :/users/username) – emaillenin