개요 : PHP를 사용하여 CMS를 구축 중이며이를 MVC를 사용하여 구현하려고합니다. this structure을 사용하여 코드를 확장하려고합니다. MVC의 정확한 표현을 나타내므로 매우 간단합니다. 내 데이터베이스와 통신하기 위해 나는 Domain Objects와 Data Mappers를 사용한다.PHP MVC 구현 모델, 뷰 및 컨트롤러 간 매핑
질문 : 1 : 모델, 뷰, 컨트롤러 사이의 1 매핑
- 그것은 1가 정말 필요합니까?
예 : 블로그 항목 페이지를 표시 할 때 블로그 시스템의 경우, 내가 DisplayEntryController라는 컨트롤러 및 DisplayEntryView라는보기를 만들 것입니다. 뷰는 현재 블로그 항목을 검색하기 위해 DB와 통신하는 BlogMapper 클래스와 현재 블로그 항목에 대한 설명을 검색하기 위해 DB와 통신하는 CommentMapper 클래스에서 정보를 가져옵니다. 보기가 2 개의 모델 객체와 함께 작동한다는 것을 고려하면 좋은 실행입니까? 대안이 없다면? 그렇다면이 방법을 일반적인 방법으로 어떻게 구현할 수 있습니까?
- 여러 컨트롤러가 한 페이지를 처리 할 수 있습니까? 위 예제의 경우, DisplayEntryController와 CommentController를 사용하여 블로그 항목을 표시하는 페이지의 관련 부분을 처리 할 수 있습니까? 그렇다면 컨트롤러가 어떻게 조정됩니까?
감사합니다. 예제는 크게 감사하겠습니다.
웹에서 보았던 대부분의 PHP MVC 구현은 페이지 접근 방식을 사용하여 MVC를 구성합니다. 예 : 홈 페이지에는 하나의보기, 하나의 컨트롤러 및 하나의 모델이 있습니다. MVC에서 1 : 1 : 1 매핑을위한 라우팅은 MVC 구성 요소의 위치와 이름을 적용 할 수 있으므로 간단합니다. 홈 페이지에 대한 요청이있을 경우 HomeView HomeController 및 HomeModel과 같은 클래스를 자동으로 찾습니다.
큰 프로젝트에서는 분명히 잘 작동하지 않습니다. 복잡하지 않은 라우터를 만들거나 복잡한 의존성 주입 레이어를 추가하지 않고 여러 모델 (DataMappers), 다중보기로의 라우팅을 지원하려면 라우팅을 어떻게 처리해야합니까?
예 : 위에서 설명한 것처럼 블로그 항목을 표시 할 때 블로그 항목 코드와 설명 부분이 표시됩니다. 이를 위해 은 블로그 항목을 가져 오는 두 개의 DataMappers, 즉 과 블로그에 대한 설명을 반환하는 DataMappers와 통신합니다. DB에서 의 데이터를 가져 오기 위해이 두 데이터 매퍼와 함께 작동하도록보기 을 할당하려면 어떻게해야합니까?
아니요, MVC 부분 사이에 1 : 1 : 1 매핑을 사용하는 것은 실제로 "잘못된 부분"이 동일한 "가중치 그룹"에 있지 않기 때문에 실제로 잘못된 것입니다. 컨트롤러와 뷰가 클래스 인 반면 모델은 레이어입니다. 그리고 여러 컨트롤러는 같은 페이지에서 접근 할 수 있지만, "좌표"가 무슨 뜻인지는 알 수 없습니다. –
MVC에서 1 : 1 : 1 매핑을위한 라우팅은 MVC 구성 요소의 위치와 이름을 적용 할 수 있으며 홈 페이지에 대한 요청이있을 때 HomeView HomeController 및 HomeModel과 같은 클래스를 자동으로 찾습니다. 복잡한 종속성 삽입 레이어를 추가하지 않고 뷰가 여러 모델 (DataMappers)과 통신 할 때 라우팅을 어떻게 처리합니까? –
예 : 위에서 설명한 것처럼 블로그 항목을 표시 할 때 블로그 항목 코드와 주석 섹션을 표시합니다. 이를 위해 블로그 항목을 가져 오는 DataMappers와 블로그에 대한 설명을 반환하는 DataMappers 두 개와 통신합니다. DB에서 데이터를 가져 오기 위해 뷰를이 두 데이터 맵퍼와 함께 사용하도록 할당하는 방법은 무엇입니까? –