2008-10-12 2 views
1

필자는 개인 프로젝트를 위해 PHP 프레임 워크를 연구 해왔고 대부분 프론트 컨트롤러를 사용하여 응답을 모방 한 것처럼 보입니다. 컨트롤러는 요청에서 매개 변수를 가져오고 논리에 따라 적절한 헤더를 보내서 다시 라우팅합니다. 이것은 "응답"입니다. 이것은 PHP에서 이것을 수행하는 가장 좋은 방법입니까, 아니면 re-routing 및 응답을 처리하는 방법에 대한 다른 이론이 있습니까?프론트 컨트롤러와 헤더를 사용하여 PHP에서 응답을 모방하는 가장 좋은 방법은 무엇입니까?

+0

응답의 특정 정의를 사용하고있는 것으로 보입니다. 하지만 나는 정확히 무엇을 얻지 못합니다. 당신의 컨텍스트가 무엇인지 자세히 설명해 주시겠습니까? – Javier

+0

Java와 같은 Response 객체 측면에서 생각하고 있는데, 수신 페이지 (뷰에 영향을 미침)에 대한 속성 정보를 추가 할 수 있지만 요청이 포함 된 이유로 인해 라우팅이 발생할 수있는 MVC의 관점에서 생각할 수 있습니다 . –

답변

3

프런트 컨트롤러는 웹 환경에 매우 적합하므로 모든 요청을 애플리케이션에 전달할 수 있습니다. HTTP는 무국적이며 어떤 의미에서는 우연히 실수로 앱의 일부를 우연히 발견 할 수 있기 때문에 (예 : URL이 잘못 입력 됨) 프런트 컨트롤러를 사용하면 애플리케이션의 진입 점을 결정하고 적절하게 대응할 수 있습니다.

편집 : 의견에 대한 응답으로, 나는 자바가 PHP보다 훨씬 많은 구조를 가지고 있을지도 모른다고 생각합니다. 이것은 모든 것을 과밀하게 만들 수도 있습니다.

switch($_GET['page']) { 
    case "one"; 
     print "page one!"; 
     break; 
    default: 
     print "default page"; 
     break; 
} 

을하고 거기에서 당신은 전면 컨트롤러에 모든 종류의 것들을에서 레이어 수 요청을 전달하면에 다시 라우팅 페이지 컨트롤러에 필터 체인을 객체 : 궁극적으로 PHP 요청의 응답에 매우 기본적인 상호 작용을 제공 할 수 있습니다 적절한 모델은 db 추상화 계층을 통해 데이터를 가져 와서 필터링하고, 컨트롤러에 백업하고, 적절한 응답을 생성하는 뷰에 모든 동안 임의의 이벤트 후크를 발생시킵니다. 궁극적으로 원하는 수준의 복잡성/분리 수준을 선택하는 것은 개발자에게 달렸습니다. 이것은 PHP의 아름다움과 악의입니다.

1

저는 여러분이 보았던 프레임 워크에서 응답 객체와 Http 응답을 혼동하고 있다고 생각합니다. 프론트 컨트롤러는 응용 프로그램의 게이트웨이입니다. 모든 (http) 요청이이 컨트롤러를 통과하고 적절한 컨트롤러/동작으로 라우팅됩니다. 요청을 처리해도 반환 된 응답이 필요하지는 않습니다 (요청은 서버에 정보를 전송하기위한 것일뿐입니다). 그러나 모든 요청은 프론트 컨트롤러를 통과했을 것입니다.

요청 개체는 환경 및 http 요청 매개 변수를 캡슐화하고이를 검색하기위한 API를 제공하는 데 자주 사용됩니다. 응답 객체 인 해당 보완은 종종 생성 헤더를 포함하여 http 응답을 생성하는 프로세스를 캡슐화하는 데 사용됩니다.

페이지 컨트롤러와 같이 PHP에 고유하지 않고 (프런트 컨트롤러도 아님) 요청이나 라우팅을 처리하는 다른 방법이 있거나 MVC 구조를 전혀 사용하지 않는 방법이 있습니다.

+0

라우팅에 적용 할 때 Page Controller 아이디어를 확장 할 수 있습니까? –

+0

페이지 컨트롤러는 라우터 또는 프론트 컨트롤러가 관여하지 않는 패턴입니다. 일반적으로 if..else 블록이나 스위치와 같은 단순한 접근 방식은로드 할 페이지를 결정합니다. 간단한 경우에 효과적입니다. 이 기사를 확인하십시오 - http://www.onlamp.com/pub/a/php/2004/10/14/page_controller.html –