본 글은 thinkphp 멀티레이어 MVC의 사용법을 주로 소개하고, thinkPHP에서 멀티레이어 MVC의 구체적인 원리와 관련 사용법을 예시와 함께 분석하여 도움이 필요한 친구들이 참고할 수 있습니다.
예시 이 기사에서는 thinkphp의 레이어 MVC 사용법을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 자세한 내용은 다음과 같습니다.
ThinkPHP는 다중 레이어 디자인을 지원합니다.
1. 모델 레이어 모델
예를 들어 프로젝트 설계에서 필요한 경우 다층 디렉토리 구조와 명명 규칙을 사용하여 다층 모델을 설계합니다. 데이터 계층과 논리 계층 구분 계층 및 서비스 계층과 같은 다양한 모델 계층은 모듈 디렉터리 아래에 Model, Logic 및 Service 디렉터리를 생성하고 사용자 테이블에 대한 모든 모델 작업을 세 개의 계층으로 나눌 수 있습니다.
1.Model/UserModel은 데이터 관련 자동 검증, 자동 완성, 데이터 접근 인터페이스 정의에 사용됩니다
2.Logic/UserLogical은 사용자 관련 비즈니스 로직 정의에 사용됩니다
3.Service/UserService는 사용자 관련 서비스 인터페이스를 정의하는 데 사용됩니다
이 세 가지 모델은 모두 Model 클래스를 상속합니다(예: 데이터 계층 Home/Model/UserModel.class.php
namespace Home\Model; use Think\Model; class UserModel extends Model{}
논리 계층 Home/Logic/UserLogical.class.php
namespace Home\Logic; use Think\Model; class UserLogic extends Model{}
서비스 레이어 Home /Service/UserService.class.php
namespace Home\Service; use Think\Model; class UserService extends Model{}
호출 시 내장된 D 메소드나 M 메소드를 이용하여
D('User') //实例化UserModel D('User','Logic') //实例化UserLogic D('User','Service') //实例化UserService
기본 모델 계층 Model에서 데이터 액세스 인터페이스 클래스를 호출할 때 두 번째 매개 변수 모델 파일 이름은 Model입니다. 설정은 다음과 같습니다.
코드는 다음과 같습니다.
'DEFAULT_M_LAYER' => 'Logic', // 更改默认的模型层名称为Logic
이 경우 인스턴스화 방법을 수정해야 합니다. 따라서
D('User') //实例化UserLogic D('User','Model') //实例化UserModel D('User','Service') //实例化UserService
D('User')를 사용하면 기본적으로 UserLogice 클래스가 인스턴스화되는 것을 볼 수 있습니다. 이는 데이터를 확인하는 경우 매우 유연합니다. , 자동 완성은 js에서 완료됩니다. 데이터 검색은 서비스 인터페이스에서 수행되므로 서비스 계층이 하나만 있고 다른 계층은 필요하지 않습니다.
2. 뷰 레이어 보기
뷰 레이어는 템플릿과 템플릿 엔진으로 구성됩니다. .tpl에서 직접 PHP 코드를 사용할 수 있습니다. 템플릿은 디렉토리(템플릿 테마)를 사용하여 여러 레이어를 간단히 구분할 수 있습니다. 예:
View/default/User/add.html
View/blue/User/add.html
더 복잡한 다중 레이어 뷰는 다양한 뷰 디렉터리를 사용하여 구분할 수도 있습니다. 예:
일반 뷰 레이어 디렉터리 보기
휴대폰 액세스 뷰 레이어 디렉터리
이러한 다양한 템플릿은 다양한 페이지 스타일을 사용하여 다음과 같이 기본 보기 디렉터리를 설정할 수도 있습니다.
코드는 다음과 같습니다.
'DEFAULT_V_LAYER' => 'Mobile', // 默认的视图层名称更改为Mobile
3. 레이어 컨트롤러
ThinkPHP 컨트롤러에는 두 가지 범주가 있습니다. 하나는 핵심 컨트롤러이고 다른 하나는 비즈니스 컨트롤러입니다. 핵심 컨트롤러는 ThinkphpThinkPHPLibraryThinkControllerHproseController.class.php와 같은 ThinkPHP 디렉터리에 있습니다. HTTP 요청 차단, 전달, 로딩 구성 등을 포함한 애플리케이션의 스케줄링 제어를 위해. 여기서 다루려고 하는 것은 사용자 정의 컨트롤러 클래스로 완성되는 비즈니스 컨트롤러이다. 다계층 비즈니스 컨트롤러의 구현 원리는 비즈니스 컨트롤러, 이벤트 컨트롤러 등 모델의 계층화와 유사하다. 🎜>
Controller/UserController //用于用户的业务逻辑控制和调度 Event/UserEvent //用于用户的事件响应操作이벤트는 아직 사용되지 않았습니다. 웹 개발에서 사용자 이벤트가 거의 없으며 대부분 완료되었습니다. js에서. 액세스 컨트롤러 Home/Controller/UserController.class.php는 다음과 같이 정의됩니다.
namespace Home\Controller; use Think\Controller; class UserController extends Controller{ }이벤트 컨트롤러 Home/Event/UserEvent .class.php는 다음과 같이 정의됩니다.
namespace Home\Event; use Think\Controller; class UserEvent extends Controller{ }UserContrlller는 http://www와 같은 URL을 통해 응답을 요청하는 외부 상호 작용 응답을 담당합니다. .php.cn / UserEvent는 내부 이벤트 응답을 담당하며 내부적으로 A('User','Event')만 호출할 수 있습니다. 마찬가지로 기본 컨트롤러 레이어를 설정할 수 있습니다.
'DEFAULT_C_LAYER' => 'Event', // 默认的控制器层名称改为Event
내부와 외부가 분리되어 있으며 다층 컨트롤러는 필수가 아닙니다. 애플리케이션의 필요에 따라 자유롭게 계층화할 수 있습니다. 필요에 따라 컨트롤러에 표시될 수도 있으며 다양한 계층적 뷰가 다양한 테마를 구현합니다.