그것들은 같은 것을 의미합니까 (URL을 액션에 첨부하거나 액션을 URL에 첨부) 또는 누락 된 차이점이 있습니까?
예 : http://github.com/dannyvankooten/PHP-Router vs. http://konstrukt.dk
그것들은 같은 것을 의미합니까 (URL을 액션에 첨부하거나 액션을 URL에 첨부) 또는 누락 된 차이점이 있습니까?
예 : http://github.com/dannyvankooten/PHP-Router vs. http://konstrukt.dk
답변:
프런트 엔드 - 컨트롤러는 과 협력해야 라우터 와 디스패처 에 기초하여 결정하기 (HTTP) 요청 에 대한 응용 프로그램 콘크리트 작업이 실행되어야하며 다음을 전달합니다.
디자인이 얼마나 설명에 따라 일부 컨트롤러 의 없이 작업 라우터 의 그리고 그들은 자신의 라우팅 또는 라우팅 요청이 처리되는 방법을 설계에 암시 적 않습니다.
일부 Dispatcher는 s의 도 통과 요청 (가) 파견에 객체를 액션 메소드를 . 그런 다음 동작 방법 은 요청 을 부분적으로 분해하여 컨트롤러 동작 조차도 요청에 따라 일부 라우팅을 수행 할 수 있습니다 . 이에 대한 일반적인 예는 프레임 워크가 응답으로 리디렉션을 제공하는 경우입니다. 또한 라우터 와 컨트롤러의 관련성 또는 근접성을 보여줍니다 .
일반적으로 여기에 그려진 차이점은 라우팅은 실행할 조치 방법을 식별하거나 처리하는 데 도움이되고 컨트롤러는이 조치를 제공하지만 요청을 처리하는 것입니다.
보다시피 라우터 와 컨트롤러 의 차이점 은 구현과 프레임 워크에 따라 크게 다를 수 있습니다. 결국, 구체적인 적용은 특정 수준의 추상화가 유용하거나 방해가 될지 여부가 필요합니다.
그러나 나는 컨트롤러 가 전체 응용 프로그램에서 더 큰 역할을 한다고 말하고 있습니다. 이것은 행동이 그렇게 말하는 곳입니다.
라우터는 일반적으로 GET 또는 POST 변수와 같은 외부 입력을 기반으로 응용 프로그램을 통해 이동합니다.
그러나 라우터는 MVC의 일부가 아니며 여러 MVC 및 HMVC 프레임 워크는 라우터를 사용하지만 MVC 패턴에 바인딩하지는 않습니다.
또한 MVC의 초기 몇 가지 구현은 실제로 별도의 컨트롤러에 액세스하기 위해 컨트롤러 당 하나의 파일로 파일 기반 작업 분리에 의존하는 것으로 나타났습니다. 보다 강력한 모델의 스키니 컨트롤러를 사용하면 컨트롤러의 특정 방법으로 스크롤 할 필요가 없으므로 한 곳에서 로직 (모델)에 액세스 할 수 있으므로 애플리케이션을 훨씬 더 잘 활용할 수 있습니다. 행동.
라우터 걸리는
의뢰
요청을 처리 할 컨트롤러 / 컨트롤러 방법을 결정합니다.
컨트롤러는 요청을 수락하고 처리합니다!
이제 URL을 분할하고 기본 URL 다음의 첫 번째 부분을 컨트롤러로 사용하고 두 번째 부분을 작업으로 사용하는 컨트롤러를 만들었습니다. 그러면 컨트롤러에 해당하는 파일과 해당 파일 내에 작업에 해당하는 메서드가로드됩니다.
이것은 실제로 컨트롤러가 아니며 (MVC와 관련하여) 라우팅의 일부입니다.
예를 들어 [GET] uri를 사용하십시오. example.com/article/view/123 MVC 라우터는 uri를 구문 분석하고 다음 세그먼트를 찾습니다.
article view 123 기본적으로 대부분의 라우터는 articleController를 인스턴스화하고 123을 매개 변수로 전달하는 view 메소드를 호출합니다. (또는 프레임 워크를위한 디자인 선택 인 getUriSegment (segmentIdx) 메소드를 사용할 수도 있습니다.)
ArticleController에는 $ articleId 매개 변수가있는 view 메서드가 있습니다. 이 방법은 아마도 다음과 같은 작업을 수행 할 것입니다 : 지정된 기사 (예 : 모델을 통해 DB에서)를 가져온 다음 (아마도 모델이 반환 한 기사가 제공된보기를 반환하여 표시)