thinkphp5.0学习笔记获取信息,变量,绑定参数
Posted 长腿野生璇**
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了thinkphp5.0学习笔记获取信息,变量,绑定参数相关的知识,希望对你有一定的参考价值。
1.构造函数:
控制器类必须继承了\\think\\Controller
类,才能使用:
方法_initialize
代码:
<?php namespace app\\lian\\controller; use think\\Controller; use think\\Db; use think\\Request; class Index extends Controller { public function _initialize() { echo \'init|||\'; } public function hello() { return \'hello\'; } }
地址:http://localhost/index.php/lian/index/hello
看输出:
2.前置方法:
[\'except\' => \'方法名,方法名\']:
表示这些方法不使用前置方法,
[\'only\' => \'方法名,方法名\']:
表示只有这些方法使用前置方法。
*********************************分割线************************************
beforeActionList
属性可以指定某个方法为其他方法的前置操作;
即执行之前执行;
代码:
<?php namespace app\\lian\\controller; use think\\Controller; use think\\Db; use think\\Request; class Index extends Controller { protected $beforeActionList = [ \'first\', \'second\' => [\'except\'=>\'hello\'], \'three\' => [\'only\'=>\'hello\'], ]; protected function first() { echo \'first<br/>\'; } protected function second() { echo \'second<br/>\'; } protected function three() { echo \'three<br/>\'; } public function hello() { return \'hello\'; } }
看下输出:
本该只输出hello的,却因为前置操作,输出了three方法;
注意:这种操作,方法名必须小写;
3.获取URL信息
<?php namespace app\\lian\\controller; use think\\Controller; use think\\Db; use think\\Request; class Index extends Controller { public function index(){ $request = Request::instance(); // 获取当前域名 echo \'domain: \' . $request->domain() . \'<br/>\'; // 获取当前入口文件 echo \'file: \' . $request->baseFile() . \'<br/>\'; // 获取当前URL地址 不含域名 echo \'url: \' . $request->url() . \'<br/>\'; // 获取包含域名的完整URL地址 echo \'url with domain: \' . $request->url(true) . \'<br/>\'; // 获取当前URL地址 不含QUERY_STRING echo \'url without query: \' . $request->baseUrl() . \'<br/>\'; // 获取URL访问的ROOT地址 echo \'root:\' . $request->root() . \'<br/>\'; // 获取URL访问的ROOT地址 echo \'root with domain: \' . $request->root(true) . \'<br/>\'; // 获取URL地址中的PATH_INFO信息 echo \'pathinfo: \' . $request->pathinfo() . \'<br/>\'; // 获取URL地址中的PATH_INFO信息 不含后缀 echo \'pathinfo: \' . $request->path() . \'<br/>\'; // 获取URL地址中的后缀信息 echo \'ext: \' . $request->ext() . \'<br/>\'; } }
4.操作变量
获取PARAM
变量
PARAM变量是框架提供的用于自动识别GET
、POST
或者PUT
请求的一种变量获取方式,是系统推荐的获取请求参数的方法,用法如下:
可以通过Request
对象完成全局输入变量的检测、获取和安全过滤~
// 获取当前请求的name变量 Request::instance()->param(\'name\'); // 获取当前请求的所有变量(经过过滤) Request::instance()->param(); // 获取当前请求的所有变量(原始数据) Request::instance()->param(false); // 获取当前请求的所有变量(包含上传文件) Request::instance()->param(true);
//获取REQUEST变量 Request::instance()->request(\'id\'); // 获取某个request变量 Request::instance()->request(); // 获取全部的request变量(经过过滤) Request::instance()->request(false); // 获取全部的request原始变量数据
5.绑定参数
参数绑定方式默认是按照变量名进行绑定;
<?php public function read($id) { return \'id =\'.$id; } public function archive($year = \'2017\',$month = \'07\') { return \'year =\'.$year.\'$month =\'.$month; }
输入网址:
http://localhost/index.php/lian/index/read/id/544
输出:
按照变量名进行参数绑定的参数必须和URL中传入的变量名称一致,但是参数顺序不需要一致
如果报出以上错误,报错的原因很简单,因为在执行read操作方法的时候,id参数是必须传入参数的,但是方法无法从URL地址中获取正确的id参数信息。由于我们不能相信用户的任何输入,因此建议你给read方法的id参数添加默认值
6.请求类型
ThinkPHP5.0 统一采用 think\\Request
类 处理请求类型。
获取请求类型:
public function hq() { // 是否为 GET 请求 if (Request::instance()->isGet()) echo "当前为 GET 请求"; // 是否为 POST 请求 if (Request::instance()->isPost()) echo "当前为 POST 请求"; // 是否为 PUT 请求 if (Request::instance()->isPut()) echo "当前为 PUT 请求"; // 是否为 DELETE 请求 if (Request::instance()->isDelete()) echo "当前为 DELETE 请求"; // 是否为 Ajax 请求 if (Request::instance()->isAjax()) echo "当前为 Ajax 请求"; // 是否为 Pjax 请求 if (Request::instance()->isPjax()) echo "当前为 Pjax 请求"; // 是否为手机访问 if (Request::instance()->isMobile()) echo "当前为手机访问"; // 是否为 HEAD 请求 if (Request::instance()->isHead()) echo "当前为 HEAD 请求"; // 是否为 Patch 请求 if (Request::instance()->isPatch()) echo "当前为 PATCH 请求"; // 是否为 OPTIONS 请求 if (Request::instance()->isOptions()) echo "当前为 OPTIONS 请求"; // 是否为 cli if (Request::instance()->isCli()) echo "当前为 cli"; // 是否为 cgi if (Request::instance()->isCgi()) echo "当前为 cgi"; }
以上是关于thinkphp5.0学习笔记获取信息,变量,绑定参数的主要内容,如果未能解决你的问题,请参考以下文章