博客列表 >控制器与请求对象--2018/5/22作业

控制器与请求对象--2018/5/22作业

弓长木子的博客
弓长木子的博客原创
2018年05月23日 12:57:51608浏览

一.控制器

        控制器:为达成某一目的而将原本散落的类及方法全部放在一个更大的类中,这个更大的类就是控制器。控制器可以实现接收用户的指令,在经过内部的类及方法处理后将结果返回给用户,整个处理过程中用到的各种类、方法、属性等基本都放在控制器中,有利于代码的维护和统一。

二.请求对象    

        请求对象可以分解为发送请求、得到反馈的过程。主要有两种方式,参数绑定和依赖注入。

        (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

结果均如下:

1.PNG

         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());
    }
}
?>

运行实例 »

点击 "运行实例" 按钮查看在线实例

      

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议