ThinkPHP5.1之控制器
控制器其实就是一个类,用来接受用户的请求并将处理结果返回给调用者(客户端),控制器是一个核心,框架的所有请求操作都由控制器控制,就像一部电脑的CPU
控制器中渲染输出问题,全部采用return 返回,return 默认仅返回字符串类型的数据
// 默认输出类型 可选json 'default_return_type' => 'html',
控制器默认命名空间与修改方法
1. 命名空间: app\模块名\controller;
2. app: 系统中默认的针对应用的根命名空间,可以在.env中进行设置
3. APP_NAMESPACE = application
4. .env文件必须放在应用根目录下(与应用目录同级)
5. controller: 并不是控制器目录名称,本质上是:可访问控制器
实例:将系统可访问控制器设置为api (1)修改config/app.php: // 默认的访问控制器层 'url_controller_layer' => 'api', (2)在index模块中创建api目录,创建Index控制器类和index()方法 <?php namespace app\index\api; class Index { public function index() { return '<h3>我是api访问控制器中的Index控制器中的test()'; } } (3)访问: tp51.io/index.php/index/index/index,将会自动访问我们自定义的控制器层
除了默认控制器层可重定义外,默认控制器与默认方法与可以重定义
实例:(1)修改app.php中的配置项 // 默认控制器名 'default_controller' => 'User', // 默认操作名 'default_action' => 'list', (2)在api/创建User.php <?php namespace app\index\api; class User { public function list() { return '<h2>我是api控制器层中的User控制器中的list()操作'; } }
ThinkPHP5.1之请求对象
请求对象就是一个URL地址,也叫URL请求,就是用户通过输入来获取和设置这些URL中的参数
参数绑定 : 参数指的是URL地址中的参数,特指是path_info方式获取
1. 参数绑定的规则在app.php中设置
// URL参数方式 0 按名称成对解析 1 按顺序解析 'url_param_type'=> 0,
2.按名称绑定: 默认方式,必须写出变量名称,以名值对方式出现,与参数顺序无关
//按名称成对解析 'url_param_type'=> 0, public function study($site,$course) { return '<h2>我在'.$site.'学习'.$course.'课程'; } 显示效果: 我在php中文网学习thinkphp5.1课程
3.按顺序绑定: 不必给出参数名称,只需要给出参数值即可,虽然url地址更短,但参数顺序绝对不能颠倒
按顺序解析 'url_param_type'=> 1, public function study($site,$course) { return '<h2>我在'.$site.'学习'.$course.'课程'; } 显示效果: 我在www.php.cn学习PHP课程
依赖注入:将当前类依赖的对象,以参数的方式注入到当前类中,简称依赖注入
<?php class Mi { public function size() { return '5.99寸全面屏'; } public function feature() { return '屏下指纹解锁'; } }
1. 构造方法实现依赖注入
class Mi7 { private $Mi = null; public function __construct(Mi $mi) { $this->mi = $mi; } public function getInfo() { return '小米8:'.$this->mi->size(); } } //将实例化外部对象的语句放在了类的外部 $mi = new Mi; $Mi7 = new Mi7($mi); echo $Mi7->getInfo(); echo '<hr>';
2.用普通方式实现依赖注入
class Mi8 { public function buy(Mi $mi) { return '小米8:'.'特色功能:'.$mi->feature(); } } $mi = new Mi; $mi8 = new Mi8(); echo $mi8->buy($mi);