一.控制器
控制器:为达成某一目的而将原本散落的类及方法全部放在一个更大的类中,这个更大的类就是控制器。控制器可以实现接收用户的指令,在经过内部的类及方法处理后将结果返回给用户,整个处理过程中用到的各种类、方法、属性等基本都放在控制器中,有利于代码的维护和统一。
二.请求对象
请求对象可以分解为发送请求、得到反馈的过程。主要有两种方式,参数绑定和依赖注入。
(1)参数绑定:通过URL地址栏传参数的方法,参数绑定的方法有两种,按名称绑定和按顺序绑定。按名称绑定的写法为参数名1/参数值1/参数名2/参数值2....;按顺序绑定不需要写参数名,但要求地址栏参数的顺序与方法中的参数顺序一致。默认采用按名称绑定,修改配置在config/app.php文件中url_param_type参数。
(2)依赖注入:由于地址栏不能传递对象参数,因此在当前方法中,将另一个类的对象作为本类的参数传入,再在本类中使用该对象,进而实现传递对象参数,这就是依赖注入。
三.依赖注入的两种常见方式
1.构造方法的基础代码:
实例
<?php namespace app\index\Controller; use think\Request;//使用Request类 class Index{ //声明一个$request接收对象参数 protected $request; //使用构造方法实现首先得到调用类的对象 public function __construct(Request $request){ $this->request = $request; } //在要调用的方法中直接使用这个类的对象 public function index(){ var_dump($this->request->param()); } } ?>
运行实例 »
点击 "运行实例" 按钮查看在线实例
如果继承了控制器基类think\Controller,则构造方法注入也不需要单独写,可以直接使用$this->request调用当前的请求对象,代码如下:
实例
<?php namespace app\index\Controller; use think\Controller;//使用Controller类 class Index extends Controller{//继承Controller类,实现构造方法注入的自动实现 protected $request; public function index(){ var_dump($this->request->param()); } } ?>
运行实例 »
点击 "运行实例" 按钮查看在线实例
URL路由:http://tp51.com/index.php/index/index/index/site/上海/course/PHP
结果均如下:
2.操作方法代码如下:
实例
<?php namespace app\index\controller; use think\Controller;//无论是否继承controller基类,均可使用操作方法注入 use think\Request; class Index extends Controller{ public function index(Request $request){//在每个方法中都使用依赖注入 var_dump($request->param()); } } ?>
运行实例 »
点击 "运行实例" 按钮查看在线实例