필자는 개인 프로젝트를 위해 PHP 프레임 워크를 연구 해왔고 대부분 프론트 컨트롤러를 사용하여 응답을 모방 한 것처럼 보입니다. 컨트롤러는 요청에서 매개 변수를 가져오고 논리에 따라 적절한 헤더를 보내서 다시 라우팅합니다. 이것은 "응답"입니다. 이것은 PHP에서 이것을 수행하는 가장 좋은 방법입니까, 아니면 re-routing 및 응답을 처리하는 방법에 대한 다른 이론이 있습니까?프론트 컨트롤러와 헤더를 사용하여 PHP에서 응답을 모방하는 가장 좋은 방법은 무엇입니까?
답변
프런트 컨트롤러는 웹 환경에 매우 적합하므로 모든 요청을 애플리케이션에 전달할 수 있습니다. HTTP는 무국적이며 어떤 의미에서는 우연히 실수로 앱의 일부를 우연히 발견 할 수 있기 때문에 (예 : URL이 잘못 입력 됨) 프런트 컨트롤러를 사용하면 애플리케이션의 진입 점을 결정하고 적절하게 대응할 수 있습니다.
편집 : 의견에 대한 응답으로, 나는 자바가 PHP보다 훨씬 많은 구조를 가지고 있을지도 모른다고 생각합니다. 이것은 모든 것을 과밀하게 만들 수도 있습니다.
switch($_GET['page']) {
case "one";
print "page one!";
break;
default:
print "default page";
break;
}
을하고 거기에서 당신은 전면 컨트롤러에 모든 종류의 것들을에서 레이어 수 요청을 전달하면에 다시 라우팅 페이지 컨트롤러에 필터 체인을 객체 : 궁극적으로 PHP 요청의 응답에 매우 기본적인 상호 작용을 제공 할 수 있습니다 적절한 모델은 db 추상화 계층을 통해 데이터를 가져 와서 필터링하고, 컨트롤러에 백업하고, 적절한 응답을 생성하는 뷰에 모든 동안 임의의 이벤트 후크를 발생시킵니다. 궁극적으로 원하는 수준의 복잡성/분리 수준을 선택하는 것은 개발자에게 달렸습니다. 이것은 PHP의 아름다움과 악의입니다.
저는 여러분이 보았던 프레임 워크에서 응답 객체와 Http 응답을 혼동하고 있다고 생각합니다. 프론트 컨트롤러는 응용 프로그램의 게이트웨이입니다. 모든 (http) 요청이이 컨트롤러를 통과하고 적절한 컨트롤러/동작으로 라우팅됩니다. 요청을 처리해도 반환 된 응답이 필요하지는 않습니다 (요청은 서버에 정보를 전송하기위한 것일뿐입니다). 그러나 모든 요청은 프론트 컨트롤러를 통과했을 것입니다.
요청 개체는 환경 및 http 요청 매개 변수를 캡슐화하고이를 검색하기위한 API를 제공하는 데 자주 사용됩니다. 응답 객체 인 해당 보완은 종종 생성 헤더를 포함하여 http 응답을 생성하는 프로세스를 캡슐화하는 데 사용됩니다.
페이지 컨트롤러와 같이 PHP에 고유하지 않고 (프런트 컨트롤러도 아님) 요청이나 라우팅을 처리하는 다른 방법이 있거나 MVC 구조를 전혀 사용하지 않는 방법이 있습니다.
라우팅에 적용 할 때 Page Controller 아이디어를 확장 할 수 있습니까? –
페이지 컨트롤러는 라우터 또는 프론트 컨트롤러가 관여하지 않는 패턴입니다. 일반적으로 if..else 블록이나 스위치와 같은 단순한 접근 방식은로드 할 페이지를 결정합니다. 간단한 경우에 효과적입니다. 이 기사를 확인하십시오 - http://www.onlamp.com/pub/a/php/2004/10/14/page_controller.html –
응답의 특정 정의를 사용하고있는 것으로 보입니다. 하지만 나는 정확히 무엇을 얻지 못합니다. 당신의 컨텍스트가 무엇인지 자세히 설명해 주시겠습니까? – Javier
Java와 같은 Response 객체 측면에서 생각하고 있는데, 수신 페이지 (뷰에 영향을 미침)에 대한 속성 정보를 추가 할 수 있지만 요청이 포함 된 이유로 인해 라우팅이 발생할 수있는 MVC의 관점에서 생각할 수 있습니다 . –