ThinkPHP控制器

5个属性

1.试图类实例对象:protected $view;
2.请求类实例对象:protected $request;
3.验证失败是否抛出异常:protected $failException=false;
4.是否批量验证:protected $batchValidate=false;
5.前置方法列表:protected $beforeActionList=[];

8个方法介绍

1.构造方法:public function __construct(Request $request = null)
2.初始化方法:protected function _initialize(){}//默认为空
3.加载模版:protected function fetch($template = ”, $vars = [], $replace = [], $config = [])
4.渲染内容:protected function display($content = ”, $vars = [], $replace = [], $config = [])
5.模版变量赋值:protected function assign($name, $value = ”)
6.初始化模版引擎:protected function engine($engine)
7.验证失败抛出异常:protected function validateFailException($fail = true)
8.验证数据:protected function validate($data, $validate, $message = [], $batch = false, $callback = null)
总结:任何学习方法,都替代不了阅读源代码。阅读源代码,不仅可以了解作者的编程思路,还可以学到很多编程技巧,是一种有效的学习方式。

什么是控制器?什么是可访问控制器?

application下的index模块下controller中的文件。

什么是操作?什么是可访问操作?

控制器中的方法。
public function 方法是可访问操作。

什么是命名空间?它与控制器或方法后缀的关系?

3个预置跟命名空间:application,think,traits。
命名空间:namespace app\index\controller;//类名=根空间+子空间(可选)+类名

5.0版本因为有了命名空间,所以不用加后缀,如果加上控制器加上后缀:可以防止类名和关键字冲突。

控制器的命名规范是什么?如何正确访问控制器?

UserLogin.php类访问:协议+模块+user_login+方法,输入的url中大写字母全部会自动转化为小写。

为什么要自定义访问控制器层?

为了项目规范。

为什么要创建多级控制器?

分级管理。

为什么要创建空操作和控制器?

对不存在的访问的url进行拦截。

在控制器中使用trait有什么好处?

可以使用基于基类的方法。

什么是单一模块?什么时候需要使用它?

// 是否支持多模块‘app_multi_module’ => false,
使用单一模块,多级控制器完成网站前后端规划。

总结:控制器的分级管理使项目逻辑更加清晰,空操作与空操作器使控制器具备了容错机制,trait的引入,使控制器可从多个trait类中继承方法集,横向扩展了控制器的功能。

公共操作有什么用?如何创建公共操作?

构造方法创建公共操作,解决了操作共享数据的问题。

公共控制器类有什么用?如何创建公共控制器?

控制器的公共操作来解决了类中数据共享以及属性初始化的问题。公共控制器,从控制器层面上,解决了控制器类之间的属性和方法的共享问题。这是二个层面上的抽象,也是非常实用的技术。

什么是前置操作?

第一步:创建前置操作方法;
第二步:配置前置操作列表。

为什么必须继承基类Controller,才能创建前置操作?

用到基类中的前置操作方法。

前置操作有什么用?如何正确的使用它?

在之前的版本中,除了前置操作,还有后置操作,不过在ThinkPHP5中,已经取消了同鸡肋的后置操作。关于前置操作,可以想象成全部或部分方法的构造函数。其目的,是为了项目规范,易维护,好发展。

页面跳转与重定向

1.页面跳转的目标有哪些?

调用方法:$this->success(‘提示’,’地址’) $this->error(‘提示’,’地址’)
1)当前控制器 2)跨控制器 3)跨模块 4)外部地址

2.如何设置URL访问重定向?

调用方法:$this->redirect(‘路由地址’,[变量列表],”,’域名开关’)
1)站内地址 2)外部地址

请求对象与参数绑定

1.请求变量与请求对象的关系?
2.请求信息包括哪些?
3.如果通过参数绑定来简化请求的URL地址?

总结:用户对所有网络资源的访问,都要通过请求对象,以URL为载体进行访问。用户需求的个性化是通过请求变量来体现。

属性注入与方法注入

1.属性注入:\think\Request::instance()->属性
2.方法注入:\think\Request::hook(‘方法’,’对应函数’)

作用:给当前请求对象绑定属性和方法,请求对象在应用的整个生命周期内都有效的,不仅可以被当前所有控制器方法所共享,还可以跨控制器和模块进行调用。
总结:请求对象的属性与方法注入,不仅可以扩展请求对象的功能,实现在整个应用周期的信息共享,而且它还为自定义请求的行为制定了标准。

请求对象依赖注入

1.依赖注入:改变了使用对象前,必须线创建对象的传统方式,而是从外部注入所依赖的对象;
2.Thinkphp5中依赖注入主要是指把对象注入到可访问控制器;
3.注入方式:控制器的构造方法和操作方法;
4.实现方式:对参数尽享兑现该类型约束则会自动触发依赖注入,自动实例话该对象。


总结:访问控制器的依赖注入,极大了方便了在操作中使用请求对象,它不需要依赖与控制器基类,也不需要倒入请求累命名空间,是一种高效的获取请求对象方式。

ThinkPHP控制器(原文地址

结束。


你们的支持也是我前进的动力,非常感谢支持!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,064评论 5 466
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,606评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,011评论 0 328
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,550评论 1 269
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,465评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,919评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,428评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,075评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,208评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,185评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,191评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,914评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,482评论 3 302
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,585评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,825评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,194评论 2 344
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,703评论 2 339

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,555评论 18 139
  • 多层控制器的使用 TP3.23对控制器做了更加细致的分层,除了默认的Controller层,还可以自定义事件控制层...
    阿V薄荷加可乐阅读 1,467评论 2 3
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,525评论 18 399
  • 一、写在前面 这几天准备写控制器中输出模板的方法display,但在阅读源码的时候遇到了一点问题。整个源码我看了一...
    阿V薄荷加可乐阅读 536评论 0 0
  • 在这夜里我又想起了你 太遥远,太难忘 遇过多少美景良人 却还是你 让我魂牵梦绕 浪子心 比石坚 似水柔 呢喃细语 ...
    心命阅读 300评论 0 4