Blogger Information
Blog 7
fans 0
comment 0
visits 5095
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
控制器与请求对象--2018/5/22作业
弓长木子的博客
Original
612 people have browsed it

一.控制器

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

二.请求对象    

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

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

运行实例 »

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

      

Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post