热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

TP6中请求和响应

TP6中请求的使用一、请求的使用1、引入Request对象usethink\facade\Request;方式1、构造方法注入protected$request;publicfun

TP6中请求的使用


一、请求的使用

//1、引入Request对象
use think\facade\Request;
//方式1、构造方法注入
protected $request;
public function __construct(Request $request)
{
$this->request = $request;
}
//方式2、操作方法注入
public function index(Request $request)
{
return $request->param('name');
}
//方式3、静态调用
public function index()
{
return Request::param('name');
}
//方式4、助手函数
public function index()
{
return request()->param('name');
}
个人推荐使用助手函数方式或者静态调用,比较简单直观


二、请求信息


常用的:

request()->host(); //当前访问域名或者IP
request()->domain(); //当前包含协议的域名
request()->url(); //当前完整的url
request()->query(); //当前请求的query_string
request()->method(); //请求方法
request()->controller(); //当前控制器
request()->action(); //当前操作

三、获取输入变量

// 获取当前请求的所有变量(经过过滤)
Request::param();
// 获取当前请求未经过滤的所有变量
Request::param(false);
// 获取当前请求的name变量
Request::param('name');
// 获取部分变量
Request::param(['name', 'email']);
//判断变量是否存在
Request::has('name','post');
//默认值
Request::get('name'); // 返回值为null
Request::get('name',''); // 返回值为空字符串
Request::get('name','default'); // 返回值为default

四、变量过滤

//框架默认没有设置任何全局过滤规则,你可以在app\Request对象中设置filter全局过滤属性:
namespace app;
class Request extends \think\Request
{
protected $filter = ['htmlspecialchars'];
}
// 获取get变量 并用htmlspecialchars函数过滤
Request::get('name','','htmlspecialchars');
// 获取param变量 并用strip_tags函数过滤
Request::param('username','','strip_tags');
// 获取post变量 并用org\Filter类的safeHtml方法过滤
Request::post('name','','org\Filter::safeHtml');

五、助手函数

//判断变量是否定义
input('?get.id');
input('?post.name');
input('?name');
// 获取单个参数
input('name');
// 获取全部参数
input('');

 HTTP头信息:

//获取全部头信息
$info = Request::header();
echo $info['accept'];
echo $info['accept-encoding'];
echo $info['user-agent'];
//获取某个头信息
$agent = Request::header('user-agent');
伪静态:
在config/route.php 中设置

// URL伪静态后缀 默认是 html
'url_html_suffix' => 'html',
//如果设置为空,则可以支持任意的 后缀
'url_html_suffix'=>''
// 多个伪静态后缀设置 用|分割
'url_html_suffix' => 'html|shtml|xml'
// 关闭伪静态后缀访问
'url_html_suffix' => false,

 


六、响应的使用


各种响应方式:

//响应输出一个字符串
Route::get('hello/:name', function ($name) {
return 'Hello,' . $name . '!';
});
或在控制器中
public function hello($name='thinkphp')
{
return 'Hello,' . $name . '!';
}
//输出json数据
$data = ['name' => 'thinkphp', 'status' => '1'];
return json($data);
//设置输出的状态码
json($data,201);
view($data,401);
//设置输出头信息
json($data)->code(201)->header([
'Cache-control' => 'no-cache,must-revalidate'
]);
//重定向
return redirect('http://www.thinkphp.cn');
//重定向使用 url传参
redirect((string) url('hello',['name' => 'think']));
//文件下载
// download是系统封装的一个助手函数
return download('image.jpg', 'my');
//直接下载内容
$data = '这是一个测试文件';
return download($data, 'test.txt', true);

 

 

 

 



推荐阅读
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • 技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统
    技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统 ... [详细]
  • Ihavetwomethodsofgeneratingmdistinctrandomnumbersintherange[0..n-1]我有两种方法在范围[0.n-1]中生 ... [详细]
  • 在PHP中如何正确调用JavaScript变量及定义PHP变量的方法详解 ... [详细]
  • 本文介绍了如何利用Struts1框架构建一个简易的四则运算计算器。通过采用DispatchAction来处理不同类型的计算请求,并使用动态Form来优化开发流程,确保代码的简洁性和可维护性。同时,系统提供了用户友好的错误提示,以增强用户体验。 ... [详细]
  • C++ 异步编程中获取线程执行结果的方法与技巧及其在前端开发中的应用探讨
    本文探讨了C++异步编程中获取线程执行结果的方法与技巧,并深入分析了这些技术在前端开发中的应用。通过对比不同的异步编程模型,本文详细介绍了如何高效地处理多线程任务,确保程序的稳定性和性能。同时,文章还结合实际案例,展示了这些方法在前端异步编程中的具体实现和优化策略。 ... [详细]
  • 在Linux系统中,网络配置是至关重要的任务之一。本文详细解析了Firewalld和Netfilter机制,并探讨了iptables的应用。通过使用`ip addr show`命令来查看网卡IP地址(需要安装`iproute`包),当网卡未分配IP地址或处于关闭状态时,可以通过`ip link set`命令进行配置和激活。此外,文章还介绍了如何利用Firewalld和iptables实现网络流量控制和安全策略管理,为系统管理员提供了实用的操作指南。 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 本文将继续探讨 JavaScript 函数式编程的高级技巧及其实际应用。通过一个具体的寻路算法示例,我们将深入分析如何利用函数式编程的思想解决复杂问题。示例中,节点之间的连线代表路径,连线上的数字表示两点间的距离。我们将详细讲解如何通过递归和高阶函数等技术实现高效的寻路算法。 ... [详细]
  • QT框架中事件循环机制及事件分发类详解
    在QT框架中,QCoreApplication类作为事件循环的核心组件,为应用程序提供了基础的事件处理机制。该类继承自QObject,负责管理和调度各种事件,确保程序能够响应用户操作和其他系统事件。通过事件循环,QCoreApplication实现了高效的事件分发和处理,使得应用程序能够保持流畅的运行状态。此外,QCoreApplication还提供了多种方法和信号槽机制,方便开发者进行事件的定制和扩展。 ... [详细]
  • 深入解析Struts、Spring与Hibernate三大框架的面试要点与技巧 ... [详细]
  • Android 构建基础流程详解
    Android 构建基础流程详解 ... [详细]
  • 在 CentOS 7 系统中安装 Scrapy 时遇到了一些挑战。尽管 Scrapy 在 Ubuntu 上安装简便,但在 CentOS 7 上需要额外的配置和步骤。本文总结了常见问题及其解决方案,帮助用户顺利安装并使用 Scrapy 进行网络爬虫开发。 ... [详细]
  • 本文详细介绍了定时器输入捕捉技术的原理及其应用。通过配置定时器通道的引脚模式为输入模式,并设置相应的捕获触发条件,可以实现对外部信号的精确捕捉。该技术在实时控制系统中具有广泛的应用,如电机控制、频率测量等场景。文中还提供了具体的配置步骤和示例代码,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 在探讨Hibernate框架的高级特性时,缓存机制和懒加载策略是提升数据操作效率的关键要素。缓存策略能够显著减少数据库访问次数,从而提高应用性能,特别是在处理频繁访问的数据时。Hibernate提供了多层次的缓存支持,包括一级缓存和二级缓存,以满足不同场景下的需求。懒加载策略则通过按需加载关联对象,进一步优化了资源利用和响应时间。本文将深入分析这些机制的实现原理及其最佳实践。 ... [详细]
author-avatar
北京城市环境监督主力军
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有