PHP 8.4 中的 HTTP 動詞變化
PHP 8.4 11 月發布,你和你的團隊對此毫無疑問 一直在努力理解新功能、棄用和 伴隨該語言最新版本的變化。這 包括對非 POST HTTP 動詞的更改。
在這個部落格中,我步行 透過PHP中HTTP動詞的背景,解釋為什麼HTTP PHP 8.4 的動詞變化很重要。然後我為開發人員提供指南 在程式碼中實現這些變更時參考。
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 超全域變量,使其變為以下內容:
<?php $_POST = [ 'title' => '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():
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 = [ 'title' => 'HTTP Verbs Changes in PHP 8.4', 'url' => 'https://example.org/blog/php-8.4-http-verbs', 'author' => 'Just Some Guy', 'tags' => ['php', 'http'], ];
- application/x-www-form-urlencoded
- multipart/form-data
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中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

PHP和Python各有優勢,選擇應基於項目需求。 1.PHP適合web開發,語法簡單,執行效率高。 2.Python適用於數據科學和機器學習,語法簡潔,庫豐富。

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

PHP在電子商務、內容管理系統和API開發中廣泛應用。 1)電子商務:用於購物車功能和支付處理。 2)內容管理系統:用於動態內容生成和用戶管理。 3)API開發:用於RESTfulAPI開發和API安全性。通過性能優化和最佳實踐,PHP應用的效率和可維護性得以提升。

PHP仍然具有活力,其在現代編程領域中依然佔據重要地位。 1)PHP的簡單易學和強大社區支持使其在Web開發中廣泛應用;2)其靈活性和穩定性使其在處理Web表單、數據庫操作和文件處理等方面表現出色;3)PHP不斷進化和優化,適用於初學者和經驗豐富的開發者。

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

PHP適合web開發,特別是在快速開發和處理動態內容方面表現出色,但不擅長數據科學和企業級應用。與Python相比,PHP在web開發中更具優勢,但在數據科學領域不如Python;與Java相比,PHP在企業級應用中表現較差,但在web開發中更靈活;與JavaScript相比,PHP在後端開發中更簡潔,但在前端開發中不如JavaScript。

PHP和Python各有優劣,選擇取決於項目需求和個人偏好。 1.PHP適合快速開發和維護大型Web應用。 2.Python在數據科學和機器學習領域佔據主導地位。
