温馨提示  2024年 6月我们已经停止开发者板块文章内容更新,谢谢来访。存档数据
知识 2023-08-29 35 次阅读

thinkphp控制器是什么

   

thinkphp的控制器是一个类,接受用户的输入并调用模型和视图去完成用户的需求;控制器层由核心控制器和业务控制器组成,负责应用的调度控制,而业务控制器则由用户定义的控制器类完成。

本教程操作环境windows7系统、thinkphp v5.1版、dell g3电脑。

thinkphp基于mvc(model-view-controller,模型-视图-控制器)模式,并且均支持多层(multi-layer)设计。

mvc是一个设计模式,它强制性的使应用程序的输入、处理和输出分开。使用mvc应用程序被分成三个核心部件模型(m)、视图(v)、控制器(c),它们各自处理自己的任务。

控制器(controller)层

thinkphp的控制器是一个类。

thinkphp的控制器层由核心控制器和业务控制器组成,核心控制器由系统内部的app类完成,负责应用(包括模块、控制器和操作)的调度控制,包括http请求拦截和转发、加载配置等。业务控制器则由用户定义的控制器类完成。多层业务控制器的实现原理和模型的分层类似,例如业务控制器和事件控制器

controller/usercontroller //用于用户的业务逻辑控制和调度

event/userevent //用于用户的事件响应操作

访问控制器 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{}

usercontroller负责外部交互响应,通过url请求响应,例如 http://servername/user/index,而 userevent负责内部的事件响应,并且只能在内部调用

a('user','event');

默认的访问控制器层是controller,我们可调整设置如下

'default,c,layer' => 'event', // 默认的控制器层名称改为event

所以是和外部隔离的。

多层控制器的划分也不是强制的,能够依据应用的需要自由分层。控制器分层里面能够依据需要调用分层模型,也可以调用不同的分层视图(主题)。

在mvc三层中,thinkphp并不依赖m或者v,甚至可以只有c或者只有v,这个在thinkphp的设计里面是一个很重要的用户体验设计,用户只需要定义视图,在没有c的情况下也能自动识别。