5-3ThinkPHP5控制器的进阶高级知识介绍:新手到高手必经之路

5-3ThinkPHP5控制器的进阶高级知识介绍:新手到高手必经之路

筛泉领缄核告兽肺副幕店矾末

5-3ThinkPHP5控制器的进阶高级知识介绍:新手到高手必经之路第1张

5-3ThinkPHP5控制器的进阶高级知识介绍:新手到高手必经之路第2张

自定义访问控制器层的方法

复制惯例配置文件D:\phpStudy\PHPTutorial\WWW\tp5\thinkphp\convention.php

5-3ThinkPHP5控制器的进阶高级知识介绍:新手到高手必经之路第3张

5-3ThinkPHP5控制器的进阶高级知识介绍:新手到高手必经之路第4张

<?php
return [
    // 默认的访问控制器层
    'url_controller_layer'   => 'api',
];

执行,此时会报错,因为此时已经修改了可访问的控制器层

5-3ThinkPHP5控制器的进阶高级知识介绍:新手到高手必经之路第5张

改正方法

1.将controller目录修改为api

5-3ThinkPHP5控制器的进阶高级知识介绍:新手到高手必经之路第6张

2.将控制器层api下的所有控制器的命名空间改为api

D:\phpStudy\PHPTutorial\WWW\tp5\application\index\api\Index.php:

<?php
namespace app\index\api;
//类名=根空间+子空间(可选)+类名
class Index
{
    public function index()
    {
        return '萌面人资料铺';
    }
    public function demo()
    {
        return "我是index模块中的index控制器下的demo方法";
    }
}

执行:

5-3ThinkPHP5控制器的进阶高级知识介绍:新手到高手必经之路第7张

总结:自定义访问控制器层是为了更加规范


5-3ThinkPHP5控制器的进阶高级知识介绍:新手到高手必经之路第8张

首先将访问控制器层改回controller

创建多级控制器Demo

5-3ThinkPHP5控制器的进阶高级知识介绍:新手到高手必经之路第9张

<?php
namespace app\index\controller\user;
class Demo
{
    public function index()
    {
        return "我是多级控制器Demo下的index方法";
    }
}

执行:http://tp5.com/index.php/index/user.demo/index

5-3ThinkPHP5控制器的进阶高级知识介绍:新手到高手必经之路第10张


5-3ThinkPHP5控制器的进阶高级知识介绍:新手到高手必经之路第11张

访问index控制器下不存在的方法test()

5-3ThinkPHP5控制器的进阶高级知识介绍:新手到高手必经之路第12张

在index控制器下创建空操作

D:\phpStudy\PHPTutorial\WWW\tp5\application\index\controller\Index.php:

<?php
namespace app\index\controller;
//类名=根空间+子空间(可选)+类名
class Index
{
    public function index()
    {
        return '萌面人资料铺';
    }
    public function demo()
    {
        return "我是index模块中的index控制器下的demo方法";
    }
    public function _empty($method)
    {
        return "你访问的方法".$method."不存在";
    }
}

执行:

5-3ThinkPHP5控制器的进阶高级知识介绍:新手到高手必经之路第13张

访问不存在的控制器会报错:

5-3ThinkPHP5控制器的进阶高级知识介绍:新手到高手必经之路第14张

创建空的控制器

打开惯例配置文件D:\phpStudy\PHPTutorial\WWW\tp5\thinkphp\convention.php

复制代码:

5-3ThinkPHP5控制器的进阶高级知识介绍:新手到高手必经之路第15张

5-3ThinkPHP5控制器的进阶高级知识介绍:新手到高手必经之路第16张

<?php
return [
    // 默认的空控制器名
    'empty_controller'       => 'Error',
];

5-3ThinkPHP5控制器的进阶高级知识介绍:新手到高手必经之路第17张

<?php
namespace app\index\controller;
class Error
{
    public function test()
    {
        return "我是当前控制器中的test方法";
    }
}

此时访问不存在的控制器:

5-3ThinkPHP5控制器的进阶高级知识介绍:新手到高手必经之路第18张

此时能够成功访问是因为指明了test方法,该方法控制器中存在

访问不存在的demo方法

5-3ThinkPHP5控制器的进阶高级知识介绍:新手到高手必经之路第19张

在空的控制器中创建空操作

5-3ThinkPHP5控制器的进阶高级知识介绍:新手到高手必经之路第20张

<?php
namespace app\index\controller;
class Error
{
    public function test()
    {
        return "我是当前控制器中的test方法";
    }
    public function _empty($method)
    {
        return "你访问的方法".$method."不存在";
    }
}

此时访问不存在的demo操作

5-3ThinkPHP5控制器的进阶高级知识介绍:新手到高手必经之路第21张

空操作和空控制器的作用:对不存在的url访问进行拦截  可以在函数里面进行很多操作


5-3ThinkPHP5控制器的进阶高级知识介绍:新手到高手必经之路第22张

php的面向对象编程是基于单继承的,使用trait可以突破这种限制,实现代码复用

trait实际上是一种特殊的类

位置:D:\phpStudy\PHPTutorial\WWW\tp5\thinkphp\library\traits

5-3ThinkPHP5控制器的进阶高级知识介绍:新手到高手必经之路第23张

当想要使用系统控制器controller控制器中的方法,而有没有继承系统的controller时候

可以使用trait中jump

在D:\phpStudy\PHPTutorial\WWW\tp5\application\index\controller\Index.php

下引入trait类中的Jump,并使用其中的success方法

5-3ThinkPHP5控制器的进阶高级知识介绍:新手到高手必经之路第24张

5-3ThinkPHP5控制器的进阶高级知识介绍:新手到高手必经之路第25张

D:\phpStudy\PHPTutorial\WWW\tp5\application\index\controller\Index.php:

5-3ThinkPHP5控制器的进阶高级知识介绍:新手到高手必经之路第26张

<?php
namespace app\index\controller;
//类名=根空间+子空间(可选)+类名
class Index
{
    use \traits\controller\Jump;
    public function index()
    {
        return '萌面人资料铺';
    }
    public function demo($name)
    {
        if($name=='php')
        {
            $this->success('正在跳转到百度','http://www.baidu.com');
        }
    }
}

执行:http://tp5.com/index.php/index/demo/name/php

5-3ThinkPHP5控制器的进阶高级知识介绍:新手到高手必经之路第27张


5-3ThinkPHP5控制器的进阶高级知识介绍:新手到高手必经之路第28张

当应用十分简单,不需要划分模块时就可以使用单一模块,单一模块就是没有模块。即应用就是模块,模块就是应用。

1.启用单一模块

打开惯例配置文件

复制代码:

5-3ThinkPHP5控制器的进阶高级知识介绍:新手到高手必经之路第29张

2.config改为不支持多模块

5-3ThinkPHP5控制器的进阶高级知识介绍:新手到高手必经之路第30张

3.复制indx模块下的访问控制器层controller下的文件,粘贴到根目录下,并删除index模块

5-3ThinkPHP5控制器的进阶高级知识介绍:新手到高手必经之路第31张

将index控制器下命名空间中index模块命名空间去掉

5-3ThinkPHP5控制器的进阶高级知识介绍:新手到高手必经之路第32张

<?php
namespace app\controller;
//类名=根空间+子空间(可选)+类名
class Index
{
    public function index()
    {
        return '单模块访问';
    }
}

执行:http://tp5.com/index/index,因为此时已经没有模块了,所以直接访问的是index控制器下的index方法

5-3ThinkPHP5控制器的进阶高级知识介绍:新手到高手必经之路第33张

此时还可以根据mvc的思想创建view目录

5-3ThinkPHP5控制器的进阶高级知识介绍:新手到高手必经之路第34张

此时如果需要划分前台与后台,则可以这样写:

使用多级控制目录

5-3ThinkPHP5控制器的进阶高级知识介绍:新手到高手必经之路第35张

5-3ThinkPHP5控制器的进阶高级知识介绍:新手到高手必经之路第36张


魔杆轰漠售为堪偏佬狗郸倒傲