당신은 매우 흥미롭고 근본적인 질문을 제기했습니다. 대규모 프로젝트 아키텍처 및 폴더 구조 구성 (아키텍처의 2 차)에 관한 질문입니다.
오늘날 CMS 프레임 워크 아키텍처를 구축하는 가장 일반적인 방법은 MVC 패턴을 사용하는 것입니다. 자신의 MVC 프레임 워크를 빌드하는 방법에 대한 좋은 기사가 있는데, 그중 하나는 PHP로 MVC 프레임 워크 빌드 입니다.
MVC는 Model, View, Controller의 약자입니다. MVC, HMVC, MVP 등 원하는 방식으로 이러한 접근 방식을 호출 할 수 있습니다. 본질은 시스템의 개별 구성 요소를 격리시키는 것입니다. "Controller"는 "Model"에서 데이터를 검색하여 최종 HTML을 렌더링하는 "View"로 보냅니다. 귀하의 'V' contacts.php
및 귀하의 'MC'를 이미 구현했습니다 contacts_class.php
. 따라서 모델과 컨트롤러에서 뷰를 분리했습니다. 이제 다른 부분은 그대로두고 "보기"를 쉽게 변경할 수 있습니다.
MVC, MVP 또는 "MV"패턴을 맹목적으로 따르는 것이 좋습니다. 적절성, 효능 및 맛의 문제이다.
일반적인 동적 웹 사이트 응용 프로그램에는 다음과 같은 구성 요소가 포함될 수 있습니다.
- 진입 점은
index.php
- 헬퍼 라이브러리 / 클래스
- 요청 라우터
- 모듈, 구성 요소 또는 컨트롤러
- 템플릿 엔진 또는 단일 뷰
실제 웹 응용 프로그램에는 이벤트 핸들러, 이벤트 디스패처 및 후크와 같은 다른 구성 요소가 포함될 수 있지만 실제로는 미묘한 차이가 있습니다. 자, 그것을 발표하고 싶은 방식으로 발표하겠습니다 :
일반적인 프레임 워크 작업 루틴은 다음과 같습니다.
- 브라우저 요청은 진입 점 실행 파일 / 스크립트 (
index.php
) 로 직접 전송됩니다 .
- 진입 점 스크립트는 헬퍼 라이브러리, 클래스를로드하고 프로그래밍 환경의 추가 초기화를 수행합니다.
- URL은 요청 라우터 인스턴스로 전달됩니다. 이 단계는 2 단계의 일부일 수 있습니다.
- 요청 라우터는 URL을 구문 분석하고 작업을 특정 구성 요소, 모듈 또는 컨트롤러에 전달합니다.
- 컴포넌트 (또는 컨트롤러)는 라우팅 된 요청을 처리하고 렌더링 할 뷰로 데이터를 보냅니다.
해당 프로젝트 폴더 구조가 다이어그램에 표시됩니다.
다른 프레임 워크가 어떻게 구현되는지 조사 할 것을 제안합니다. 시작하는 데 권장되는 CMS / 프레임 워크는 CodeIgniter, OpenCart, Joomla 1.5 및 Tango CMS입니다.