이 글은 thinkPHP5.0 프레임워크의 전반적인 아키텍처를 주로 소개하고, thinkPHP5.0 애플리케이션, 모듈, MVC, 드라이버, 동작, 네임스페이스 등의 개념과 기본 사용법을 간략하게 소개합니다. 필요한 친구들은 참고하면 됩니다
이 문서에서는 thinkPHP5.0 프레임워크의 전체 아키텍처를 설명합니다. 참고를 위해 모든 사람과 공유하세요. 세부 사항은 다음과 같습니다:
ThinkPHP5.0 애플리케이션은 MVC(Model-View-Controller)를 기반으로 구성됩니다.
MVC는 애플리케이션의 입력, 처리 및 출력을 분리하도록 하는 디자인 패턴입니다. MVC를 사용하면 애플리케이션은 모델(M), 뷰(V), 컨트롤러(C)의 세 가지 핵심 구성 요소로 나누어지며, 각 구성 요소는 자체 작업을 처리합니다.
5.0 URL 액세스는 라우팅이 꺼져 있거나 일치하는 경로가 없는 경우
http://serverName/index.php(또는 기타 애플리케이션 항목 파일)/module/을 기준으로 결정됩니다. 컨트롤러 /Operation/Parameter/Value...
다음 개념 중 일부는 이해하는 데 필요하며 다음 콘텐츠에서 자주 언급될 수 있습니다.
입력 파일
사용자가 요청한 PHP 파일은 요청의 수명 주기를 처리합니다(단, URL 요청일 필요는 없음). 가장 일반적인 항목 파일은 index.php
입니다. >. 때로는 배경 모듈을 위한 별도의 항목 파일 admin.php
또는 컨트롤러 프로그램 항목 think
와 같은 특별한 요구 사항을 위해 새 항목 파일도 추가됩니다. 항목 파일에. index.php
,有时候也会为了某些特殊的需求而增加新的入口文件,例如给后台模块单独设置的一个入口文件admin.php
或者一个控制器程序入口think
都属于入口文件。
应用
应用在ThinkPHP中是一个管理系统架构及生命周期的对象,由系统的 thinkApp
类完成,应用通常在入口文件中被调用和执行,具有相同的应用目录(APP_PATH
Application
Application은 ThinkPHP에서 시스템 아키텍처와 라이프사이클을 관리하는 객체입니다. 시스템의 thinkApp
클래스에 의해 완성되며, 일반적으로 해당 애플리케이션이 항목 파일에서 호출되어 실행됩니다. 애플리케이션 디렉터리(APP_PATH
)에 있는 애플리케이션은 동일한 애플리케이션으로 간주되지만 애플리케이션에는 여러 항목 파일이 있을 수 있습니다.
모듈
일반적인 애플리케이션은 여러 모듈로 구성됩니다. 이러한 모듈은 일반적으로 애플리케이션 디렉터리 아래의 하위 디렉터리에 있습니다. 각 모듈에는 자체적인 독립적인 구성 파일, 공용 파일 및 클래스 라이브러리 파일이 있습니다.5.0은 단일 모듈 아키텍처 설계를 지원합니다. 애플리케이션 아래에 모듈이 하나만 있는 경우 애플리케이션 구성 파일에서 이 모듈의 하위 디렉터리를 생략하고 수정할 수 있습니다
:'app_multi_module' => false,
Controller
모듈에는 독립적인 MVC 클래스 라이브러리와 구성 파일이 있습니다. 하나의 모듈 아래에는 요청 응답을 담당하는 여러 컨트롤러가 있으며, 각 컨트롤러는 실제로 독립적인 컨트롤러 클래스입니다.
컨트롤러는 주로 요청을 받고 관련 모델 처리를 호출하고 최종적으로 뷰를 통해 출력하는 역할을 담당합니다. 엄밀히 말하면 컨트롤러는 비즈니스 로직 처리에 너무 관여해서는 안 됩니다.실제로 5.0에서는 라우팅을 통해 컨트롤러를 건너뛸 수 있으며 처리를 위해 요청을 모델이나 다른 클래스에 직접 전달할 수 있습니다.
5.0 컨트롤러 클래스는 더 유연하며 기본 클래스 라이브러리를 상속할 필요가 없습니다. 일반적인 Index 컨트롤러 클래스는 다음과 같습니다.namespace app\index\controller; class Index { public function index() { return 'hello,thinkphp!'; } }
Operations
컨트롤러에는 여러 개의 연산(메서드)이 포함되어 있으며, 연산 방식은 URL 접근의 최소 단위입니다. 다음은 두 가지 연산 방식을 포함하는 일반적인 Index 컨트롤러 연산 방식 정의입니다.namespace app\index\controller; class Index { public function index() { return 'index'; } public function hello($name) { return 'Hello,'.$name; } }연산 방식은 어떠한 매개변수도 사용할 수 없습니다. 사용자 요청을 통해 URL 요청인 경우 일반적으로 $_GET 또는 $_POST를 통해 전달됩니다.
Model
모델 클래스는 일반적으로 실제 비즈니스 로직과 데이터 캡슐화를 완료하고 형식 독립적인 데이터를 반환합니다.
모델 클래스가 반드시 데이터베이스에 접근할 필요는 없으며, 5.0 아키텍처 설계에서는 실제 데이터베이스 쿼리 작업이 수행될 때만 데이터베이스 연결이 이루어지는데, 이는 진정한 지연 연결입니다.
ThinkPHP의 모델 계층은 다중 계층 설계를 지원합니다. 모델 계층을 논리 계층/서비스 계층/이벤트 계층으로 나누는 등 모델 계층에서 보다 세부적인 설계 및 작업 분할을 수행할 수 있습니다.
View
컨트롤러가 모델 클래스를 호출한 후 반환된 데이터는 뷰를 통해 다양한 형식의 출력으로 조합됩니다. 뷰는 템플릿 엔진을 호출하여 콘텐츠를 구문 분석한 다음 이를 출력하거나 다양한 요구에 따라 직접 출력하기로 결정합니다.
뷰에는 일반적으로 다양한 컨트롤러 및 작업 방법에 해당하는 일련의 템플릿 파일이 있으며 템플릿 디렉터리의 동적인 설정을 지원합니다.Driver
시스템의 많은 구성 요소는 보다 유연하게 확장할 수 있는 드라이버 설계를 채택합니다. 드라이버 클래스의 위치는 기본적으로 핵심 클래스 라이브러리 디렉터리에 배치되며 드라이버 클래스의 네임스페이스를 재정의하여 변경할 수도 있습니다. 드라이버 클래스 라이브러리. 드라이버의 파일 위치. 🎜🎜🎜행동🎜🎜行为(Behavior)是在预先定义好的一个应用位置执行的一些操作。类似于AOP编程中的“切面”的概念,给某一个切面绑定相关行为就成了一种类AOP编程的思想。所以,行为通常是和某个位置相关,行为的执行时间依赖于绑定到了哪个位置上。
要执行行为,首先要在应用程序中进行行为侦听,例如:
// 在app_init位置侦听行为 \think\Hook::listen('app_init');
然后对某个位置进行行为绑定:
// 绑定行为到app_init位置 \think\Hook::add('app_init','\app\index\behavior\Test');
一个位置上如果绑定了多个行为的,按照绑定的顺序依次执行,除非遇到中断。
命名空间
ThinkPHP5采用了PHP的命名空间进行类库文件的设计和规划,并且符合PSR-4
的自动加载规范。
相关推荐:
위 내용은 thinkPHP5.0 프레임워크의 전체 아키텍처 개요 [애플리케이션, 모듈, MVC, 드라이버, 동작, 네임스페이스 등]의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!