Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
PHP 8.4 中的 HTTP 动词变化_创想鸟

PHP 8.4 中的 HTTP 动词变化

PHP 8.4 已于 11 月发布,您和您的团队无疑一直在努力理解该语言最新版本所带来的新功能、弃用和更改。这包括对非 POST HTTP 动词的更改。在这篇博客中,我将介绍 PHP 中 HTTP 动词的背景,解释为什么 PHP 8.4 中的 HTTP 动词变化很重要。然后,我提供了一个指南,供开发人员在代码中实现这些更改时参考。

PHP 8.4 中的 HTTP 动词变化

PHP 中的 HTTP 动词:背景

PHP 开发时考虑到了网络,并支持其表单处理 最早的日子。最初在 HTTP 中,本质上只有两个 浏览器可以请求网页的方法:通过 GET 或 POST。  虽然 HTML 表单仍然只真正支持这两种方法, JavaScript 能够使用任何 HTTP 方法发送 HTTP 请求, 许多工具包(例如 HTMX)甚至可以为开发人员无缝处理此问题。

GET 和 POST HTTP 方法

GET 请求通过 URL 的查询字符串传递表单数据。 这意味着表单结果可以被添加书签、重复,甚至 缓存。因此,GET 请求通常仅用于操作 请求状态而不改变状态:搜索、结果 排序、结果过滤、分页等

如果你想执行 可能会在应用程序内进行更改的操作 – 例如, 处理购物车、发送支持消息、上传 图像等 — 您将使用 POST HTTP 方法。 POST 请求是 被认为是非幂等的,这意味着它们不能被缓存并且不应该 需要重复,因为它们有副作用。这些影响可能意味着数据库中的插入、更改或删除、文件系统操作、Web 请求或其他操作。

在 为了自动处理表单数据,PHP 提供了几种 它从传入请求填充的超全局变量。 $_GET 填充有 URL 查询字符串参数,并且可以从任何请求方法填充。然而,$_POST 仅由使用内容类型 application/x-www-form-urlencoded 发出的 POST 请求的正文填充,其可能如下所示:

title=HTTP Verbs Changes in PHP 8.4&url=https://example.org/blog/php-8.4-http-verbs&author=Just Some Guy&tags[0]=php&tags[1]=http

PHP 将接受它并填充 $_POST 超全局变量,使其变为以下内容:

 'HTTP Verbs Changes in PHP 8.4',    'url' => 'https://example.org/blog/php-8.4-http-verbs',    'author' => 'Just Some Guy',    'tags' => ['php', 'http'],];

PHP 确实这样做的事实这在幕后为您提供了 PHP 如此易于学习和入门的部分原因。

此外,它还可以处理内容类型 multipart/form-data,允许浏览器上传文件另外提供表单数据。当它这样做时,它将填充一个额外的 $_FILES superglobal,提供上传文件的信息; 然后,开发人员可以在存储之前验证和预处理这些文件 它们位于永久位置。

其他 HTTP 方法

还有 比 GET 和 POST 多得多的 HTTP 方法以及 Web 开发人员 通常会想要选择不同的方法来提供上下文 他们正在尝试执行以下操作:

PUT 通常用于指示数据应替换现有数据。PATCH 通常用于指示对现有记录的部分更新DELETE 用于表示应删除或标记为提交的记录或内容已删除。

虽然浏览器本身不支持这些(还!),但许多 JavaScript 框架和库都支持。

但是 有一个问题:PHP 不会自动处理这些请求。在 事实上,你必须完全自己处理这些解析,这 当您还开始处理文件上传时,可能会出现很大的问题 以及表单数据。 (永远不要推出自己的解析器!)

对非 POST HTTP 动词的更改

PHP 8.4 引入了方法 request_parse_body():

立即学习“PHP免费学习笔记(深入)”;

[$_POST, $_FILES] = request_parse_body(?array $options = null);

函数以一如既往的方式解析传入的请求 用于 POST 请求,但允许您指定备用变量 存储表单数据和文件上传(或覆盖超全局变量, 如果你愿意的话)。您还可以通过 $options 参数更改解析器的行为,更多信息如下。

常见模式可能是:

<?phpif (in_array($_SERVER['REQUEST_METHOD'], ['PUT', 'PATCH', 'DELETE'], true)) {    [$_POST, $_FILES] = request_parse_body();}

(尽管如果您正在使用框架,希望框架能够为您处理该细节。)

那就是 从字面上看是整个功能。提供一个简单的功能 作为 PHP 开发人员,您已经熟悉了交钥匙行为。它 没有比这更好的了!

PHP 8.4 中的 HTTP 动词:开发人员指南

现在 我们已经讨论了 PHP 8.4 中 HTTP 动词的变化,让我们 查看一些示例,了解如何使用和应用这些 代码中的更新。

支持的内容类型

就像 POST 请求一样,request_parse_body() 只会解析具有以下内容的请求类型:

application/x-www-form-urlencodedmultipart/form-data

在 application/x-www- 的情况下形式 urlencoded,$_FILES 等效 数组(返回数组中的索引 1)将为空。如果内容 不支持类型,该函数将抛出 InvalidArgumentException。

php://input

PHP 允许您通过 php://input 流检查原始请求内容。这是一个缓冲流,可以(从 PHP 7.4 开始)多次读取。但是,当接收 multipart/form-data 时 内容,PHP 变得有点破坏性,有一个很好的理由:缓冲 文件可能会导致文件内容被写入磁盘两次, 导致更多的内存、存储和 I/O 使用。

因此,request_parse_body() 不得调用两次,因为它会破坏性地消耗 php://input。

$options参数

request_parse_body() 的 $options 参数允许您在运行时更改其行为,而不是依赖于硬编码php.ini 配置。

指定 post_max_size 作为它将尝试解析的最大内容大小。指定 max_input_vars 以限制它将尝试解析的表单变量数量。指定 upload_max_filesize 来限制单个文件的大小指定 max_file_uploads 以限制它将处理的文件上传数量。指定 max_multipart_body_parts 以限制它将解析的文件上传和表单数据变量的组合。

以上就是PHP 8.4 中的 HTTP 动词变化的详细内容,更多请关注php中文网其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1283893.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
PHP7浮点型精度如何?
上一篇 2025年12月11日 00:15:07
适用于 Ubuntu 和 Debian 的 PHP 8.4 安装和升级指南
下一篇 2025年12月11日 00:15:18

相关推荐

  • WooCommerce教程:有选择地从订单邮件通知中移除产品购买备注

    本文将指导您如何通过自定义代码,在WooCommerce的特定订单邮件通知中移除产品购买备注。默认情况下,购买备注会出现在订单确认邮件和订单完成邮件中。但有时,您可能希望仅在订单确认邮件中显示这些备注,而在订单完成邮件中将其隐藏。以下步骤将帮助您实现这一目标。 步骤 1: 理解问题 直接使用wooc…

    2026年9月23日
    100
  • 夸克浏览器在线连接入口 夸克官网快速直达链接

    夸克浏览器在线使用入口为https://quark.sm.cn/,用户可通过浏览器直接访问、手机应用内跳转、扫描二维码或搜索官网链接进入;其具备AI智能搜索、无广告干扰、多端数据同步及高效安全浏览等优势。 夸克浏览器在线连接入口 夸克官网快速直达链接在哪里?这是不少网友都关注的,接下来由PHP小编为…

    2026年9月23日
    100
  • Laravel Eloquent:优化消息查询以获取最新记录

    本文探讨了在 laravel 中如何高效地查询用户消息,以获取与特定用户相关的所有最新消息记录。通过摒弃传统的 sql `join` 和 `group by` 组合在复杂场景下的局限性,我们推荐使用 eloquent 关系和预加载机制。这种方法不仅能避免 `group by` 可能导致的非预期结果,…

    2026年9月23日
    100
  • 使用PHP和Ajax实现搜索结果的A-Z排序

    在PHP搜索结果页面实现A-Z排序功能,可以极大地提升用户体验。结合Ajax技术和PHP后端排序逻辑,我们可以在不刷新页面的情况下实现排序功能。以下将详细介绍实现步骤。 1. 前端:创建排序表单和Ajax请求 首先,需要在 search.php 页面中创建一个表单,用于触发排序操作。这个表单可以包含…

    2026年9月23日
    000
  • 华为畅享系列微信收款语音怎么设置?教你配置语音播报步骤

    答案:华为畅享系列设置微信收款语音播报需更新微信、开启收款助手与通知权限、在“收款小账本”开启语音提醒并授权麦克风,确保非静音状态;若无播报,检查设置、权限、音量或兼容性问题;不支持自定义播报内容;耗电极低可忽略。 华为畅享系列手机设置微信收款语音播报,简单来说,就是让手机在收到微信支付时,自动用语…

    2026年9月23日
    300
  • 为什么macOS系统被认为比Windows更少受到病毒和恶意软件的困扰?

    macOS受病毒困扰较少因用户基数小、系统架构安全、生态封闭及用户习惯好,但威胁正随市场份额增长而增加。 macOS系统相对较少受到病毒和恶意软件的困扰,这背后有多重因素共同作用,并非单一原因。虽然近年来针对Mac的威胁确实在增加,但整体感染率仍低于Windows平台。 用户基数与攻击目标 黑客开发…

    2026年9月23日
    800
  • 如何解决Linux软件包冲突 yum和apt依赖问题处理方案

    如何解决Linux软件包冲突 yum和apt依赖问题处理方案如何解决Linux软件包冲突 yum和apt依赖问题处理方案如何解决Linux软件包冲突 yum和apt依赖问题处理方案如何解决Linux软件包冲突 yum和apt依赖问题处理方案

    处理linux软件包冲突的核心方法是利用包管理器自带修复机制并手动干预。1. 清理缓存与元数据,重新更新以解决临时错误;2. 使用跳过损坏包、强制重装等方式尝试自动修复;3. 禁用或调整第三方仓库优先级以避免冲突源;4. 手动安装特定版本依赖或卸载冲突包;5. 对于apt系统,使用–fi…

    2026年9月23日 • 用户投稿
    500
  • LuminarAI怎么裁剪图片?教你利用AI工具实现精准构图方法

    LuminarAI怎么裁剪图片?教你利用AI工具实现精准构图方法LuminarAI怎么裁剪图片?教你利用AI工具实现精准构图方法LuminarAI怎么裁剪图片?教你利用AI工具实现精准构图方法LuminarAI怎么裁剪图片?教你利用AI工具实现精准构图方法

    LuminarAI通过AI辅助裁剪和构图建议提升图片视觉效果,结合透视校正、畸变修复与AI增强工具优化构图,但裁剪后画质下降主因是像素减少,需从高分辨率原图出发并适度裁剪,导出时选择合适参数以保留质量。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模…

    2026年9月23日 • 用户投稿
    700
  • mysql怎么删除索引 mysql创建和删除索引的完整指南

    mysql怎么删除索引 mysql创建和删除索引的完整指南mysql怎么删除索引 mysql创建和删除索引的完整指南mysql怎么删除索引 mysql创建和删除索引的完整指南mysql怎么删除索引 mysql创建和删除索引的完整指南

    mysql中删除和创建索引主要通过drop index、create index或alter table语句实现,推荐使用alter table以增强语义清晰度。1. 删除索引可使用drop index index_name on table_name; 或alter table table_nam…

    2026年9月23日 • 用户投稿
    1500
  • 漫蛙漫画(在线入口)防失效 漫蛙漫画官网地址(网页版)更新

    漫蛙漫画最新官网地址为https://manwa.me,备用镜像站为https://fuwt.cc/mw666,平台支持免登录访问、多设备适配及高清流畅阅读体验。 漫蛙漫画在线入口防失效最新官网地址在哪里?这是不少网友都关注的,接下来由PHP小编为大家带来漫蛙漫画网页版官网更新后的地址信息,感兴趣的…

    2026年9月23日
    200
  • PrestaShop分类描述在分页时隐藏的机制与SEO考量

    本教程探讨PrestaShop商店中分类描述在分页时消失的现象。我们将解释为何在访问第二页或后续页面时,分类描述不再显示,甚至在返回第一页后也可能消失。文章将从技术实现和搜索引擎优化(SEO)的角度分析这一行为,强调其通常并非问题,并提供专业见解。 PrestaShop分类描述分页行为解析 在pre…

    2026年9月23日
    100
  • mysql如何输入注释 mysql写sql代码的格式规范

    mysql如何输入注释 mysql写sql代码的格式规范mysql如何输入注释 mysql写sql代码的格式规范mysql如何输入注释 mysql写sql代码的格式规范mysql如何输入注释 mysql写sql代码的格式规范

    在mysql中,单行注释使用–(后跟空格)或#,多行注释使用/*…*/。1. 注释应解释“为什么”而非“是什么”,单行注释推荐使用–,#常用于脚本开头;2. 多行注释适用于复杂逻辑说明或版权信息;3. sql格式规范包括关键词大写、统一缩进、合理换行与逗号放置,以…

    2026年9月23日 • 用户投稿
    400
  • CodeIgniter 4 API:捕获并返回HTTP响应中的错误

    在使用CodeIgniter 4构建API服务时,我们经常需要处理各种异常情况。默认情况下,CodeIgniter 4会将错误信息记录到日志文件中,但不会直接将其返回到HTTP响应中。这导致我们需要频繁地查看日志文件来排查问题,效率较低。为了解决这个问题,我们可以通过修改配置文件,将错误信息直接暴露…

    2026年9月23日
    100
  • mysql怎么添加降序索引 mysql创建排序索引的语法详解

    mysql怎么添加降序索引 mysql创建排序索引的语法详解mysql怎么添加降序索引 mysql创建排序索引的语法详解mysql怎么添加降序索引 mysql创建排序索引的语法详解mysql怎么添加降序索引 mysql创建排序索引的语法详解

    mysql从8.0版本开始支持降序索引,通过在列名后添加desc关键字创建,例如create index idx_order_date_desc on orders (order_date desc);。1. 降序索引优化了order by column desc查询的性能,避免文件排序;2. 升序…

    2026年9月23日 • 用户投稿
    100
  • Tableau的AI混合工具如何操作?生成智能数据可视化的实用指南

    Tableau的AI混合工具通过自然语言查询、自动解释和预测模型,降低数据分析门槛,帮助非技术用户快速获取洞察。首先,Ask Data支持用日常语言提问,自动生成可视化图表,显著提升数据探索效率;其次,Explain Data利用机器学习分析异常点,揭示潜在影响因素,将“是什么”转化为“为什么”;再…

    2026年9月23日
    000
  • 抖音短视频被系统判定违规怎么办 抖音内容管理与违规申诉方法

    先明确违规原因,再通过APP申诉并提交原创或授权证据,必要时邮件、电话多渠道沟通,确保材料真实完整。 抖音视频被系统判定违规,先别急着申诉,关键是要搞清楚为什么会被判。平台的审核机制有时会出现误判,但也可能是内容确实踩了红线。处理的核心是精准定位问题、准备充分证据、通过正确渠道沟通。下面分几步说明怎…

    2026年9月23日
    300
  • WooCommerce 购物车联动:实现赠品自动添加与移除的专业指南

    本文提供了一份关于在 woocommerce 中实现自动赠品系统的全面指南。它解决了在程序化添加产品时常见的 `woocommerce_add_to_cart` 递归问题,并提供了一个使用自定义购物车项元数据来管理关联赠品的健壮解决方案,确保赠品能与特定主产品同步添加和移除。 引言 在电子商务中,为…

    2026年9月23日
    500
  • MySQL安装需要哪些硬件配置要求?

    MySQL安装需要哪些硬件配置要求?MySQL安装需要哪些硬件配置要求?MySQL安装需要哪些硬件配置要求?MySQL安装需要哪些硬件配置要求?

    mysql的硬件配置需根据应用场景和负载决定,生产环境应重点考虑磁盘i/o、内存、cpu和网络。1. cpu:oltp场景多核心更重要,olap则更依赖主频和缓存;2. 内存:buffer pool越大越好,但需避免过度分配导致swap使用;3. 磁盘i/o:ssd是标配,nvme ssd和raid…

    2026年9月23日 • 用户投稿
    200
  • PHP教程:解析和访问包含JSON字符串的数组值

    本教程旨在指导读者如何高效地从PHP数组中提取数据,特别是当数组的每个元素都是一个JSON格式的字符串时。文章将详细介绍如何利用json_decode()函数将JSON字符串转换为PHP数组,并通过示例代码演示循环遍历和直接访问特定字段的方法,帮助您轻松处理此类复杂数据结构。 理解数据结构 在php…

    2026年9月23日
    200
  • 视频号新号直播扶持几天?视频号怎么做才有流量

    近年来,随着视频号平台的不断壮大,越来越多的人开始将目光投向这一新兴领域。为了吸引优质创作者加入,视频号推出了针对新注册账号的直播扶持计划。本文将带您深入了解这项扶持政策,并提供实用建议,帮助您快速提升影响力。 一、视频号直播扶持政策详解 1. 政策背景 该扶持政策是视频号顺应国家推动数字经济发展、…

    2026年9月23日
    400

发表回复

登录后才能评论
关注微信