美文网首页程序员
ThinkPHP控制器

ThinkPHP控制器

作者: PlusNie | 来源:发表于2017-08-08 10:50 被阅读226次

    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控制器(原文地址

    结束。


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

    相关文章

      网友评论

        本文标题:ThinkPHP控制器

        本文链接:https://www.haomeiwen.com/subject/qqqtrxtx.html