Home > PHP Framework > ThinkPHP > body text

What does mvc stand for in thinkphp

爱喝马黛茶的安东尼
Release: 2019-08-22 10:24:36
Original
3757 people have browsed it

What does mvc stand for in thinkphp

ThinkPHP is based on the MVC (Model-View-Controller, Model-View-Controller) pattern, and supports multi-layer (multi-Layer) design.

Model layer

The default model layer is composed of the Model class, but as the project grows and the business system becomes more complex, a single model layer is very It is difficult to solve the requirements. ThinkPHP supports multi-layer Model. 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.

What does mvc stand for in thinkphp

Related recommendations: "ThinkPHP Tutorial"

For example, in a certain project design, it is necessary to distinguish between data layer, logic layer, and service Layer and other different model layers, we can create Model, Logic and Service directories under the module directory, and divide all model operations on the user table into three layers:

1. Data layer: Model/UserModel is used to define Data-related automatic verification and automatic completion and data access interface

2. Logic layer: Logic/UserLogic is used to define user-related business logic

3. Service layer: Used by Service/UserService For defining user-related service interfaces, etc.

The three model operation classes can all inherit the Model class, for example:

Data layer:

Home/Model/UserModel.class.php
namespace Home\Model;
use Think\Model;
class UserModel extends Model{
}
Copy after login

Logical layer:

Home/Logic/UserLogic.class.php
namespace Home\Logic;
use Think\Model;
class UserLogic extends Model{
}
Copy after login

Service layer: Home/Service/UserService.class.php

namespace Home\Service;
use Think\Model;
class UserService extends Model{
}
Copy after login

After distinguishing different model layers, the operation of user data will be very clear. When calling, we can also It is very convenient to call with the built-in D method:

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

The default model layer is Model, we can also change the settings, for example:

‘DEFAULT_M_LAYER‘       =>  ‘Logic‘, // 更改默认的模型层名称为Logic
Copy after login

After the change, when instantiating, it needs to be changed to:

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

The hierarchical division of the model layer is very flexible. Developers can freely define and add model hierarchies according to the needs of the project. You can also only use the Model layer.

View (View) layer

The view layer consists of templates and template engines. PHP code can be used directly in the templates. The design of the template engine will be in As described later, other third-party template engines can also be supported through drivers. Multi-layer views can be simply distinguished by directories (that is, template themes), for example:

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

More complex multi-layer views can be further completed by using different view directories, for example:

view 普通视图层目录
mobile 手机端访问视图层目录
Copy after login

The advantage of this is that each different view layer can support different template theme functions.

The default view layer is the View directory. We can adjust the settings as follows:

‘DEFAULT_V_LAYER‘       =>  ‘Mobile‘, // 默认的视图层名称更改为Mobile
Copy after login

To obtain the template of the non-default view layer directory, you need to use the T function, which will be discussed later.

Controller layer

The controller layer of ThinkPHP consists of core controller and business controller. The core controller is completed by the App class inside the system. Responsible for the scheduling control of applications (including modules, controllers and operations), including HTTP request interception and forwarding, loading configuration, etc. The business controller is completed by a user-defined controller class. The implementation principle of multi-layer business controller is similar to the layering of models, such as business controller and event controller:

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

Access controller Home/Controller/UserController.class.php is defined as follows:

namespace Home\Controller;
use Think\Controller;
class UserController extends Controller{
}
Copy after login

Event controller Home/Event/UserEvent.class.php is defined as follows:

namespace Home\Event;
use Think\Controller;
class UserEvent extends Controller{
}
Copy after login

What does mvc stand for in thinkphpUserController is responsible for external interactive response and responds through URL request, such as http://serverName/User/index, UserEvent is responsible for internal event response and can only be called internally:

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

The default access controller layer is Controller. We can adjust the settings as follows:

‘DEFAULT_C_LAYER‘       =>  ‘Event‘, // 默认的控制器层名称改为Event
Copy after login

What does mvc stand for in thinkphp

So it is isolated from the outside.

The division of multi-layer controllers is not mandatory and can be freely layered according to the needs of the application. In the controller layer, you can call the layered model as needed, or you can call different layered views (themes).

In the three layers of MVC, ThinkPHP does not rely on M or V. It can even only have C or only V. This is a very important user experience design in ThinkPHP design. The user only needs to define the view. It can be automatically recognized even without C.

The above is the detailed content of What does mvc stand for in thinkphp. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template