ThinkPHP5.0 请求

请求

请求信息

  • 可以通过\think\Request类或者助手函数request()进行获取URL相关信息

示例:

<?php
namespace app\index\controller;
use \think\Request;

class Index{
    public function index(){
//        $request = Request::instance();//通过Request类获取请求对象
        $request = Request::instance();//通过助手函数request()获取请求对象
        echo "域名:".$request->domain()."<br>";//获取域名
        echo "入口文件:".$request->baseFile()."<br>";//获取入口文件名
        echo "当前访问url,不含域名:".$request->url()."<br>";//获取当前URL地址,不含域名
        echo "当前访问url,含域名:".$request->url(true)."<br>";//获取当前URL地址,含域名
        echo "url的ROOT地址,不含域名:".$request->root()."<br>";//获取url的ROOT;
        echo "url的ROOT地址,含域名:".$request->root(true)."<br>";//获取url的ROOT;
        echo "获取url中的PATH_INFO信息,含后缀:".$request->pathinfo()."<br>";//获取地址PATH_INFO信息,不含后缀
        echo "获取url中的PATH_INFO信息,不含后缀:".$request->path()."<br>";//获取地址PATH_INFO信息,含后缀
        echo "获取url中的后缀信息:".$request->ext()."<br>";//获取url后缀信息
    }
}

  • 另外,还可以继承Controller基类后,使用基类的request属性进行调用
<?php
namespace app\index\controller;
use \think\Controller;

class Index extends Controller{
    public function index(){
        $request = $this->request;
        echo "域名:".$request->domain()."<br>";//获取域名
        echo "入口文件:".$request->baseFile()."<br>";//获取入口文件名
        echo "当前访问url,不含域名:".$request->url()."<br>";//获取当前URL地址,不含域名
        echo "当前访问url,含域名:".$request->url(true)."<br>";//获取当前URL地址,含域名
        echo "url的ROOT地址,不含域名:".$request->root()."<br>";//获取url的ROOT;
        echo "url的ROOT地址,含域名:".$request->root(true)."<br>";//获取url的ROOT;
        echo "获取url中的PATH_INFO信息,含后缀:".$request->pathinfo()."<br>";//获取地址PATH_INFO信息,不含后缀
        echo "获取url中的PATH_INFO信息,不含后缀:".$request->path()."<br>";//获取地址PATH_INFO信息,含后缀
        echo "获取url中的后缀信息:".$request->ext()."<br>";//获取url后缀信息
    }

}

URL访问

http://www.tp5.com/public/index.html

输出结果

域名:http://www.tp5.com
入口文件:/public/index.php
当前访问url,不含域名:/public/index.html
当前访问url,含域名:http://www.tp5.com/public/index.html
url的ROOT地址,不含域名:/public
url的ROOT地址,含域名:http://www.tp5.com/public
获取url中的PATH_INFO信息,含后缀:index.html
获取url中的PATH_INFO信息,不含后缀:index
获取url中的后缀信息:html

请求方法和属性注入

可以实现数据共享,注入必须写在应用目录的common.php中,下面与给Request类注册一个userName属性和getUserName方法示例

// 应用公共文件
use think\Request;
$request = Request::instance();//获取请求对象实例
$request->userName = 'rufeike';//请求对象的属性注入
//请求注入的方法
function getUserName(Request $request){//注意,需要进行请求对象约束
     return $request->userName;
}

//注册请求对象的方法(钩子)
Request::hook('getUserName','getUserName');

控制器中调用属性和方法

<?php
namespace app\index\controller;
use \think\Controller;
use \think\Request;

class Index extends Controller{
    public function index(){
        $request = Request::instance();
        echo "注入属性:".$request->userName."<br>";
        echo "注入方法:".$request->getUserName();
    }
}

输出结果

注入属性:rufeike
注入方法:rufeike

请求依赖对象注入

在公共文件common.php进行请求属性和方法注入会影响效率,tp官方推荐采用依赖对象注入的方式。在不继承基础类Controller的前提下,可以单独指定需要注入的方法也可以在类构造方法中注入,实现类内共享。

  • 方法依赖注入方式
<?php
namespace app\index\controller;
use \think\Request;

class Index{
    public function index(Request $request){//方法依赖注入
        dump($request->param());
    }
}

  • 类共享注入方式
<?php
namespace app\index\controller;
use \think\Request;

class Index{
    protected $request;
    public function __construct(Request $request){//构造方法注入
        $this->request = Request::instance();
    }

    public function index(){
        dump($this->request->param());
    }

}

URL访问

http://www.tp5.com/public/index/index/index/name/rufeik

输出结果

array(1) {
  ["name"] => string(6) "rufeik"
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值