Home Backend Development PHP Tutorial ThinkPHP3.1 new features multi-layer MVC support_PHP tutorial

ThinkPHP3.1 new features multi-layer MVC support_PHP tutorial

Jul 13, 2016 am 10:24 AM

1. Model layer: The default model layer is composed of the Model class. However, as the project grows and the business system becomes more complex, it is difficult for a single model layer to meet the requirements. From 3.1 Multi-layer Model support has been launched. The design idea is very simple. Different model layers still inherit from the system's Model class, but they are distinguished in the directory structure and naming convention. For example, in a certain project design, the data layer needs to be distinguished. , logic layer, service layer and other different model layers, we can create Model, Logic and Service directories under the Lib directory of the project, and divide all model operations on the user table into three layers:

Data layer: Model/UserModel is used to define data-related automatic verification and automatic completion and data access interfaces
Logic layer: Logic/UserLogic is used to define user-related business logic
Service layer: Service/UserService is used to define user-related service interfaces, etc.

These three model operation classes can all inherit the Model class, so that the operation of user data is very clear. When calling, you can also use the built-in D method to conveniently call:

D('User') //实例化UserModel
D('User','Logic') //实例化UserLogic
D('User','Service') //实例化UserService
Copy after login

The hierarchical division of model layers is very flexible, and developers can freely define hierarchies according to the needs of the project.

2. View layer: consists of a template and a template engine. PHP code can be used directly in the template. The design of the template engine will be described later. Other third parties can also be supported through the driver. template engine. Multiple layers of views can be easily distinguished by directories, for example:

Tpl/default/User/add.html
Tpl/blue/User/add.html
Copy after login

3. Controller layer: ThinkPHP’s controller layer consists of core controller and business controller. The core controller is completed by the App class inside the system and is responsible for applications (including modules and (operation) scheduling control, including HTTP request interception and forwarding, loading configuration, etc. The business controller is completed by the user-defined Action class. Version 3.1 has added support for multi-layer service controllers. The implementation principle is similar to the layering of the model, such as business controller and event controller:

Action/UserAction //用于用户的业务逻辑控制和调度
Event/UserEvent //用于用户的事件响应操作
Copy after login

UserAction is responsible for external interaction response and responds through URL request, such as http://serverName/User/index, while UserEvent is responsible for internal event response and can only be called internally

 A('User','Event');
Copy after login

So it is isolated from the outside world. The division of multi-layer controllers is not mandatory and can be layered freely according to the needs of the project. In the controller layer, you can call the layered model as needed, or you can call the view templates of different directories.
At the same time, the R method can also support the calling of multi-layer controllers, adding a third parameter to represent the layer name of the controller, for example:

R('User/register',array(15),'Event');
Copy after login

means calling the register method of the UserEvent controller and passing in parameter 15.
In the three layers of MVC, ThinkPHP does not rely on M or V, and can even have only C or only V. This is a very important user experience design in ThinkPHP design. Users only need to define Views can be automatically recognized without C.

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/825375.htmlTechArticle1. Model layer: The default model layer consists of the Model class, but as the project grows and With the complexity of the business system, it is difficult for a single model layer to meet the requirements. Starting from 3.1, multiple...
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Explain JSON Web Tokens (JWT) and their use case in PHP APIs. Explain JSON Web Tokens (JWT) and their use case in PHP APIs. Apr 05, 2025 am 12:04 AM

JWT is an open standard based on JSON, used to securely transmit information between parties, mainly for identity authentication and information exchange. 1. JWT consists of three parts: Header, Payload and Signature. 2. The working principle of JWT includes three steps: generating JWT, verifying JWT and parsing Payload. 3. When using JWT for authentication in PHP, JWT can be generated and verified, and user role and permission information can be included in advanced usage. 4. Common errors include signature verification failure, token expiration, and payload oversized. Debugging skills include using debugging tools and logging. 5. Performance optimization and best practices include using appropriate signature algorithms, setting validity periods reasonably,

Explain the concept of late static binding in PHP. Explain the concept of late static binding in PHP. Mar 21, 2025 pm 01:33 PM

Article discusses late static binding (LSB) in PHP, introduced in PHP 5.3, allowing runtime resolution of static method calls for more flexible inheritance.Main issue: LSB vs. traditional polymorphism; LSB's practical applications and potential perfo

How does session hijacking work and how can you mitigate it in PHP? How does session hijacking work and how can you mitigate it in PHP? Apr 06, 2025 am 12:02 AM

Session hijacking can be achieved through the following steps: 1. Obtain the session ID, 2. Use the session ID, 3. Keep the session active. The methods to prevent session hijacking in PHP include: 1. Use the session_regenerate_id() function to regenerate the session ID, 2. Store session data through the database, 3. Ensure that all session data is transmitted through HTTPS.

Describe the SOLID principles and how they apply to PHP development. Describe the SOLID principles and how they apply to PHP development. Apr 03, 2025 am 12:04 AM

The application of SOLID principle in PHP development includes: 1. Single responsibility principle (SRP): Each class is responsible for only one function. 2. Open and close principle (OCP): Changes are achieved through extension rather than modification. 3. Lisch's Substitution Principle (LSP): Subclasses can replace base classes without affecting program accuracy. 4. Interface isolation principle (ISP): Use fine-grained interfaces to avoid dependencies and unused methods. 5. Dependency inversion principle (DIP): High and low-level modules rely on abstraction and are implemented through dependency injection.

How to automatically set permissions of unixsocket after system restart? How to automatically set permissions of unixsocket after system restart? Mar 31, 2025 pm 11:54 PM

How to automatically set the permissions of unixsocket after the system restarts. Every time the system restarts, we need to execute the following command to modify the permissions of unixsocket: sudo...

How to debug CLI mode in PHPStorm? How to debug CLI mode in PHPStorm? Apr 01, 2025 pm 02:57 PM

How to debug CLI mode in PHPStorm? When developing with PHPStorm, sometimes we need to debug PHP in command line interface (CLI) mode...

Explain late static binding in PHP (static::). Explain late static binding in PHP (static::). Apr 03, 2025 am 12:04 AM

Static binding (static::) implements late static binding (LSB) in PHP, allowing calling classes to be referenced in static contexts rather than defining classes. 1) The parsing process is performed at runtime, 2) Look up the call class in the inheritance relationship, 3) It may bring performance overhead.

See all articles