文章目录

  • 环境
  • 在Controller中获取Request对象
    • 构造器注入
    • 操作方法注入
    • 继承BaseController
    • 助手函数
    • Facade
  • 参考

环境

  • Windows 11 专业版
  • XAMPP 8.2.12
    • PHP 8.2.12
    • VSCode 1.103.0

在Controller中获取Request对象

要想在Controller中获取Request对象,有以下几种方式:

  • 构造器注入
  • 操作方法注入
  • 继承BaseController
  • 助手函数
  • Facade

下面一一举例说明。

构造器注入

顾名思义,在控制器的构造器里注入Request对象:

namespace app\controller;use think\Request;class Test1 {protected $request;public function __construct(Request $request) {$this->request = $request;}public function foo() {// 使用request对象echo $this->request->pathinfo();}
}

运行结果如下:

在这里插入图片描述

注:如果用 curl 命令访问,如果输出非常多的信息:

PS C:\> curl.exe --silent -XGET "http://localhost:8000/test1/foo"
test1/foo<style>#think_page_trace {position:fixed; bottom:0; right:0; font-size:14px; width:100%; z-index:999999; color:#000; text-align:left; font-family:'微软雅黑';}#think_page_trace_tab {display:none; background:white; margin:0; height: 250px;}#think_page_trace_tab_tit {height:30px; padding: 6px 12px 0; border-bottom:1px solid #ececec; border-top:1px solid #ececec; font-size:16px;}#think_page_trace_tab_tit>span {color:#000; padding-right:12px; height:30px; line-height:30px; display:inline-block; margin-right:3px; cursor:pointer; font-weight:700;}#think_page_trace_tab_cont {overflow:auto; height:212px; padding:0; line-height:24px;}
......
......

这是因为开启了debug模式。其实刚才页面访问时,在debug模式下,也返回了同样多的内容。注意上图中,在页面右下角有一个图标,可以点开,查看debug详细信息。

如果想要关闭debug信息,打开项目根目录里的 .env 文件:

APP_DEBUG = false

其默认值是true,改为false即可。

操作方法注入

顾名思义,在控制器的某个方法里注入Request对象:

namespace app\controller;use think\Request;class Test2 {public function foo(Request $request) {echo $request->pathinfo();}
}

运行结果如下:

PS C:\> curl.exe http://localhost:8000/test2/foo
test2/foo

这种方式好像有点怪,因为操作方法本身可以带参数,现在把request对象也放进来,感觉有点乱。

继承BaseController

namespace app\controller;use app\BaseController;class Test3 extends BaseController {public function foo() {echo $this->request->pathinfo();}
}

运行结果如下:

PS C:\> curl.exe http://localhost:8000/test3/foo
test3/foo

这种方法比较好。正常情况下,控制器就应该继承BaseController类,而BaseController类已经通过构造器注入了App对象:

abstract class BaseController {......protected $request;......public function __construct(App $app) {......$this->request = $this->app->request;......

这样,在子类控制器中,就可以直接使用request对象了。

助手函数

为了方便使用,系统为一些常用的操作方法封装了助手函数,比如:

  • app()
  • config()
  • dump()
  • json()
  • request()
  • response()

其中 request() 助手函数是获取当前Request对象,可以在任何需要的时候直接调用。

namespace app\controller;class Test4 {public function foo() {echo request()->pathinfo();}
}

运行结果如下:

PS C:\> curl.exe http://localhost:8000/test4/foo
test4/foo

Facade

可以通过Facade机制来静态调用请求对象的方法:

namespace app\controller;use think\facade\Request;class Test5 {public function foo() {echo Request::pathinfo();}
}

运行结果如下:

PS C:\> curl.exe http://localhost:8000/test5/foo
test5/foo

注意区分:本例中 use 所引入的Request类和前面的有所不同。

参考

  • https://doc.thinkphp.cn/v8_0/request.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/93483.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/93483.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/93483.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

week2-[循环结构]找出正数

week2-[循环结构]找出正数 题目描述 给定 NNN 个整数A1,A2,…,ANA_1,A_2,\ldots,A_NA1​,A2​,…,AN​。请求出这 NNN 个数中有多少个数是正数&#xff0c;并求出这些正数的平均值。如果 A1,A2,…,ANA_1,A_2,\ldots,A_NA1​,A2​,…,AN​ 不存在正数&#xff0c;那么输出 “Non…

Android平台RTSP播放器选型指南:从开源方案到跨平台低延迟专业SDK

1. 引言&#xff1a;Android RTSP 播放的三条路径 在 Android 平台实现 RTSP 播放&#xff0c;看似只是“能播起来”的问题&#xff0c;实际上是一个涉及延迟、稳定性、解码性能、协议兼容、工程可控性等多维指标的综合选型问题。 从安防监控、教育互动&#xff0c;到单兵指挥…

Linux安装及远程连接知识实践

文章目录一、VMware创建虚拟机故障及解决汇总1. 镜像下载2. 镜像选择安装3.安装VMware遇到的相关问题4. VMware操作系统的安装4.1 选择系统的引导4.2 修改网卡名为eth0的形式(和CentOS7以前保持一致)4.3 进入下一步安装界面4.4 进入到安装摘要页面(INSTALLATION SUMMARY)4.5 配…

F Core 批量写与“软实时”一致性:ExecuteUpdate / COPY / SqlBulkCopy 的取舍与事务权衡

EF Core 批量写与“软实时”一致性&#xff1a;ExecuteUpdate / COPY / SqlBulkCopy 的取舍与事务权衡 ✨ &#x1f4da; 目录EF Core 批量写与“软实时”一致性&#xff1a;ExecuteUpdate / COPY / SqlBulkCopy 的取舍与事务权衡 ✨1. 术语与目标 &#x1f9ed;2. 技术选型总览…

基于PSO粒子群多目标优化的微电网调度算法matlab仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序 4.系统原理简介 4.1 改进粒子群算法 4.2 分布式电源与储能模型公式 4.3 多目标函数 5.参考文献 6.完整工程文件 1.课题概述 微电网优化调度的核心是在满足系统约束&#xff08;如功率平衡、设备出力限制等&#xff09;的前…

Spring AI ChatClient集成Deepseek

Spring AI ChatClient集成Deepseek 下文将简述如何通过spring ai集成deepseek实现智能对话。在开始之前你需要在deepseek官网申请一个apikey,并设置到系统变量中&#xff0c;保障安全性。 ChatModel 在集成deepseek前&#xff0c;我们先要了解一个chat model&#xff0c;chat m…

Azure微软云内网接入问题

1. 域名解析失败 azure需要给ClientSecretCredentialBuilder和AzureResourceManager都配置HTTP 代理,但还是会域名解析失败,netty会调用InetAddress.getByName解析域名.最终只能在hosts文件写死host和ip映射关系 2. netty版本不匹配,导致报错netty某个方法找不到 azure只用引入…

【IDEA】设置Debug调试时调试器不进入特定类(Spring框架、Mybatis框架)

问题 以Ruoyi-Vue项目为例&#xff0c;以Debug方式启动项目&#xff0c;在com.ruoyi.web.controller.system.SysUserController#list()方法中的userService.selectUserList(user)处打上断点&#xff0c;访问[系统管理–用户管理]页面&#xff0c;程序就会执行到该断点处此时按下…

OpenCV 视频处理全解析

OpenCV 视频处理全解析&#xff1a;从基础操作到高级应用​在计算机视觉领域&#xff0c;视频处理是一个核心且广泛应用的技术方向。无论是安防监控、自动驾驶还是短视频特效&#xff0c;都离不开对动态视频流的智能分析与处理。OpenCV 作为最流行的开源计算机视觉库&#xff0…

java如何使用正则提取字符串中的内容

在Java中使用正则表达式提取字符串内容&#xff0c;主要通过java.util.regex包中的Pattern和Matcher类实现。以下是详细步骤和示例&#xff1a;1. 基础流程 import java.util.regex.Matcher; import java.util.regex.Pattern;public class RegexExample {public static void ma…

Baumer高防护相机如何通过YoloV8深度学习模型实现行人跌倒的检测识别(C#代码UI界面版)

《------往期经典推荐------》 AI应用软件开发实战专栏【链接】 序号项目名称项目名称11.工业相机 YOLOv8 实现人物检测识别&#xff1a;&#xff08;C#代码&#xff0c;UI界面版&#xff09;2.工业相机 YOLOv8 实现PCB的缺陷检测&#xff1a;&#xff08;C#代码&#xff0…

jetson orin nx(8G)烧录super系统实录

1. 说明 2. 下载新版发布包&#xff08;在PC上下载&#xff09; Jetson Linux Archive | NVIDIA Developer 安装的jetpack版本为6.2.1&#xff08;rev.2)对应的Jetson Linux 36.4.4 点击绿色区域的36.4.4>&#xff0c;进入下载页面&#xff0c;如下 点击Driver Package(B…

LeetCode算法日记 - Day 11: 寻找峰值、山脉数组的峰顶索引

目录 1. 寻找峰值 1.1 题目解析 1.2 解法 1.3 代码实现 2. 山脉数组 2.1 题目解析 2.2 解法 2.3 代码实现 1. 寻找峰值 162. 寻找峰值 - 力扣&#xff08;LeetCode&#xff09; 峰值元素是指其值严格大于左右相邻值的元素。 给你一个整数数组 nums&#xff0c;找到峰…

Cherryusb UAC例程对接STM32 SAI播放音乐和录音(下)=>USB+SAI+TX+RX+DMA控制WM8978播放和录音实验

1. 程序基本框架 整个程序框架, 与之前的一篇文章《Cherryusb UAC例程对接STM32内置ADC和DAC播放音乐和录音(中)>UACSTM32 ADCDAC实现录音和播放》基本一致, 只是这次将ADC和DAC替换成了SAI TX/RX。因此这里不再赘述了。2. sai_dma_wm8978_usb.c主程序的实现说明 在menuconf…

Docker运行python项目:使用Docker成功启动FastAPI应用

根据昨天成功使用阿里云镜像加速后&#xff0c;我是根据windows本地的python项目&#xff0c;直接传到了centos&#xff0c;然后再导入到docker里面&#xff0c;然后进行运行&#xff0c;主要是发现运行的时候&#xff0c;老是提示一些库的问题&#xff0c;还有就是一些python老…

PowerShell来关闭 Windows 安全中心

你可以使用 PowerShell 来关闭 Windows 安全中心的盾牌图标&#xff08;通知&#xff09;。以下是几种方法&#xff0c;包括禁用通知、关闭 Windows Defender&#xff08;不推荐&#xff09;或调整注册表。方法 1&#xff1a;禁用 Windows 安全中心通知&#xff08;推荐&#x…

基于深度学习的老照片修复系统

背景随着时间的推移&#xff0c;老照片可能会因褪色、损坏或曝光不当而影响其视觉质量。这些珍贵的影像承载着历史和回忆&#xff0c;但由于物理损耗&#xff0c;它们的观赏价值和可读性逐渐下降。为了恢复这些照片的清晰度和色彩&#xff0c;本项目采用深度学习与先进的图像处…

深入解析Tomcat目录结构

Apache Tomcat 是一个强大的 Servlet 容器,它不仅支持 Java Servlet 和 JSP 技术,还提供了丰富的功能来帮助开发者构建和部署动态的 Web 应用。为了更好地理解和使用 Tomcat,了解其文件结构和组成部分是至关重要的。本文将深入探讨 Tomcat 的目录结构及其各个组件的作用。 …

专题:2025抖音电商与微短剧行业研究报告|附150+份报告PDF汇总下载

原文链接&#xff1a;https://tecdat.cn/?p43595 当618大促的硝烟散去&#xff0c;抖音电商的生态分化愈发刺眼&#xff1a;服饰内衣以27.5%的份额稳坐头把交椅&#xff0c;而无数中小商家却在“流量荒”中挣扎。这场看似繁荣的盛宴里&#xff0c;平台规则如同无形的手&#x…

3.Ansible自动化之-编写和运行playbook

3.Ansible编写和运行 Playbook Playbook 介绍 如果把 Ansible 的ad-hoc命令比作 “一次性脚本”&#xff08;适合临时执行单个简单任务&#xff09;&#xff0c;那么Playbook就是 “可重复执行的程序”&#xff08;适合复杂、多步骤的管理流程&#xff09;。 举个例子&#…