Home >PHP Framework >ThinkPHP >What does mvc stand for in thinkphp

What does mvc stand for in thinkphp

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼Original
2019-08-22 10:24:363791browse

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{
}

Logical layer:

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

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

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

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

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

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

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

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

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

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

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

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

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 //用于用户的事件响应操作

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

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

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

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

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‘);

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

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

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!

Statement:
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