筛泉领缄核告兽肺副幕店矾末
自定义访问控制器层的方法
复制惯例配置文件D:\phpStudy\PHPTutorial\WWW\tp5\thinkphp\convention.php
<?php return [ // 默认的访问控制器层 'url_controller_layer' => 'api', ];
执行,此时会报错,因为此时已经修改了可访问的控制器层
改正方法
1.将controller目录修改为api
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方法"; } }
执行:
总结:自定义访问控制器层是为了更加规范
首先将访问控制器层改回controller
创建多级控制器Demo
<?php namespace app\index\controller\user; class Demo { public function index() { return "我是多级控制器Demo下的index方法"; } }
执行:http://tp5.com/index.php/index/user.demo/index
访问index控制器下不存在的方法test()
在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."不存在"; } }
执行:
访问不存在的控制器会报错:
创建空的控制器
打开惯例配置文件D:\phpStudy\PHPTutorial\WWW\tp5\thinkphp\convention.php
复制代码:
<?php return [ // 默认的空控制器名 'empty_controller' => 'Error', ];
<?php namespace app\index\controller; class Error { public function test() { return "我是当前控制器中的test方法"; } }
此时访问不存在的控制器:
此时能够成功访问是因为指明了test方法,该方法控制器中存在
访问不存在的demo方法
在空的控制器中创建空操作
<?php namespace app\index\controller; class Error { public function test() { return "我是当前控制器中的test方法"; } public function _empty($method) { return "你访问的方法".$method."不存在"; } }
此时访问不存在的demo操作
空操作和空控制器的作用:对不存在的url访问进行拦截 可以在函数里面进行很多操作
php的面向对象编程是基于单继承的,使用trait可以突破这种限制,实现代码复用
trait实际上是一种特殊的类
位置:D:\phpStudy\PHPTutorial\WWW\tp5\thinkphp\library\traits
当想要使用系统控制器controller控制器中的方法,而有没有继承系统的controller时候
可以使用trait中jump
在D:\phpStudy\PHPTutorial\WWW\tp5\application\index\controller\Index.php
下引入trait类中的Jump,并使用其中的success方法
D:\phpStudy\PHPTutorial\WWW\tp5\application\index\controller\Index.php:
<?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
当应用十分简单,不需要划分模块时就可以使用单一模块,单一模块就是没有模块。即应用就是模块,模块就是应用。
1.启用单一模块
打开惯例配置文件
复制代码:
2.config改为不支持多模块
3.复制indx模块下的访问控制器层controller下的文件,粘贴到根目录下,并删除index模块
将index控制器下命名空间中index模块命名空间去掉
<?php namespace app\controller; //类名=根空间+子空间(可选)+类名 class Index { public function index() { return '单模块访问'; } }
执行:http://tp5.com/index/index,因为此时已经没有模块了,所以直接访问的是index控制器下的index方法
此时还可以根据mvc的思想创建view目录
此时如果需要划分前台与后台,则可以这样写:
使用多级控制目录
魔杆轰漠售为堪偏佬狗郸倒傲