博主信息
博文 7
粉丝 0
评论 0
访问量 6183
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
控制器与请求对象--2018/5/22作业
弓长木子的博客
原创
773人浏览过

一.控制器

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

二.请求对象    

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

        (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举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学