이 글은 주로 ThinkPHP3.1의 새로운 기능 중 다중 레이어 MVC 지원을 소개합니다. 이제 필요한 친구들이 참고할 수 있도록 공유하겠습니다.
기본 모델 레이어는 다음과 같이 구성됩니다. Model 클래스가 있지만 프로젝트가 성장하고 비즈니스 시스템이 더욱 복잡해짐에 따라 단일 모델 계층이 요구 사항을 충족하기가 어렵습니다. 3.1부터 다중 계층 모델 지원이 시작되었습니다. 이 글에서는 주로 ThinkPHP3.1 멀티 레이어 MVC 지원에 대해 소개합니다. 필요하신 분들은 참고하시면 됩니다.
1. 모델 레이어: 기본 모델 레이어는 모델 클래스로 구성되지만, 프로젝트가 성장함에 따라 비즈니스 시스템의 복잡성으로 인해 단일 모델 레이어가 요구 사항을 충족하기가 어렵습니다. 3.1부터 다중 레이어 모델에 대한 지원이 도입되었습니다. 디자인 아이디어는 여전히 시스템의 모델에서 상속됩니다. 클래스이지만 디렉터리 구조와 명명 규칙에서 예를 들어 특정 프로젝트를 설계할 때 데이터 계층, 논리 계층, 서비스 계층과 같은 다양한 모델 계층을 구분해야 합니다. 모델, 논리 및 서비스를 만들 수 있습니다. 프로젝트의 Lib 디렉터리 아래에 디렉터리를 만들고 모든 사용자 테이블을 넣습니다. 모델 작업은 세 가지 계층으로 나뉩니다:
데이터 계층: 모델/사용자 모델은 데이터 관련 자동 검증 및 자동 완성 및 데이터 액세스 인터페이스를 정의하는 데 사용됩니다.
Logic 레이어: Logic/UserLogic은 사용자 관련 비즈니스 로직을 정의하는 데 사용됩니다
Service 레이어: Service/UserService는 사용자 관련 서비스 인터페이스 등을 정의하는 데 사용됩니다.
이 세 가지 모델 작업 클래스는 모두 Model을 상속할 수 있습니다. 클래스를 사용하여 사용자 데이터의 작업이 매우 명확하고 호출 시 내장된 D 메서드를 사용하여 쉽게 호출할 수 있습니다.
D('User') //实例化UserModel D('User','Logic') //实例化UserLogic D('User','Service') //实例化UserService
모델 레이어의 계층적 분할은 매우 유연하며 개발자는 프로젝트의 필요에 따라 계층 구조를 자유롭게 정의합니다.
2. 뷰 레이어: 템플릿과 템플릿 엔진으로 구성됩니다. 템플릿 엔진의 디자인은 나중에 설명하겠습니다. 뷰의 여러 레이어는 디렉토리로 간단히 구분할 수 있습니다. 예:
Tpl/default/User/add.html Tpl/blue/User/add.html
3. 컨트롤러(Controller) 레이어: ThinkPHP의 컨트롤러 레이어는 핵심 컨트롤러와 비즈니스 컨트롤러로 구성됩니다. 시스템 내의 App 클래스는 완성되었으며 HTTP 요청 차단 및 전달, 구성 로드 등을 포함하여 애플리케이션(모듈 및 작업 포함)의 일정 제어를 담당합니다. 비즈니스 컨트롤러는 사용자 정의 Action 클래스에 의해 완성됩니다. 버전 3.1에는 다중 계층 서비스 컨트롤러에 대한 지원이 추가되었습니다. 구현 원칙은 비즈니스 컨트롤러 및 이벤트 컨트롤러와 같은 모델의 계층화와 유사합니다.
Action/UserAction //用于用户的业务逻辑控制和调度 Event/UserEvent //用于用户的事件响应操作
UserAction은 외부 대화형 응답을 담당하고 http://serverName/User/index와 같은 URL 요청을 통해 응답합니다. , UserEvent 내부 이벤트 응답을 담당하며 내부에서만 호출할 수 있으므로(
A('User','Event');
) 외부와 격리되어 있습니다. 멀티 레이어 컨트롤러의 구분은 필수가 아니며 프로젝트의 필요에 따라 자유롭게 레이어링할 수 있습니다. 컨트롤러 계층에서는 필요에 따라 계층화된 모델을 호출하거나 다른 디렉터리의 뷰 템플릿을 호출할 수 있습니다.
동시에 R 메서드는 다중 계층 컨트롤러 호출도 지원할 수 있습니다. 예를 들어
R('User/register',array(15),'Event');
은 레지스터 메서드 호출을 의미합니다. UserEvent 컨트롤러를 사용하고 매개변수 15를 전달합니다.
MVC의 세 가지 계층에서 ThinkPHP는 M이나 V에 의존하지 않고 C만 가질 수도 있고 V만 가질 수도 있습니다 이는 ThinkPHP 디자인에서 매우 중요한 사용자 경험 디자인입니다. 사용자는 뷰만 정의하면 됩니다. C 없이도 자동으로 인식할 수 있습니다.
위 내용은 이 글의 전체 내용입니다. 모든 분들의 학습에 도움이 되었으면 좋겠습니다. 더 많은 관련 내용은 PHP 중국어 홈페이지를 주목해주세요!
관련 권장 사항:
Ajax를 지원하는 ThinkPHP 3.1의 새로운 기능에 대한 자세한 소개
thinkphp를 통해 이메일을 보내기 위한 비밀번호 검색 기능에 대한 소개
위 내용은 ThinkPHP3.1의 새로운 기능에 포함된 다중 계층 MVC 지원 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!