ホームページ > バックエンド開発 > PHPチュートリアル > PHP 8.4 での HTTP 動詞の変更

PHP 8.4 での HTTP 動詞の変更

尊渡假赌尊渡假赌尊渡假赌
リリース: 2024-12-24 16:47:33
転載
893 人が閲覧しました

PHP 8.4 は 11 月にリリースされました。あなたとあなたのチームは疑いの余地がありません 新機能、非推奨事項、および この言語の最新の反復に伴う変更。これ 非 POST HTTP 動詞への変更が含まれています。

このブログでは、私は歩きます PHP の HTTP 動詞の背景を通して、HTTP がなぜ使われるのかを説明します。 PHP 8.4 での動詞の変更が問題です。次に、開発者向けのガイドを提供します これらの変更をコード内に実装するときに参照します。

截屏2024-12-24 16.43.04.png

PHP の HTTP 動詞: バックグラウンド

PHP Web を念頭に置いて開発され、Web からのフォーム処理をサポートしていました。 最初の頃。もともと HTTP には基本的に 2 つしかありませんでした。 ブラウザが Web ページをリクエストできるメソッド: GET または POST。  HTML フォームはまだ実際にはこれら 2 つのメソッドのみをサポートしていますが、 JavaScript には、任意の HTTP メソッドを使用して HTTP リクエストを送信する機能があります。

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 = [
    &#39;title&#39; => '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 の学習と開始を非常に容易にする理由の 1 つです。

さらに、コンテンツ タイプ multipart/form-data も処理できます。これにより、ブラウザーはフォーム データの提供に加えてファイルをアップロードできるようになります。その際、追加の $_FILES が設定されます。 スーパーグローバル: アップロードされたファイルに関する情報を提供します。 開発者は、保存する前にそれらのファイルを検証して前処理できます。

その他の 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
ログイン後にコピー
ログイン後にコピー


が導入されました。 関数は、いつもと同じ方法で受信リクエストを解析します。 POST リクエスト用ですが、代わりの変数を指定することもできます。 フォーム データとファイルのアップロードを保存します (またはスーパーグローバルを上書きします)。 お好みであれば)。 $options 引数を使用してパーサーの動作を変更することもできます。詳細については以下で説明します。

一般的なパターンは次のとおりです。

<?php $_POST = [
    &#39;title&#39; => '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 8.4 の HTTP 動詞: 開発者ガイド

Now PHP 8.4 での HTTP 動詞の変更について説明しました。次に見てみましょう。 これらを使用および適用する方法について、いくつかの例を見てみましょう。

サポートされているコンテンツ タイプ

POST リクエストと同様に、request_parse_body() は次のコンテンツを含むリクエストのみを解析します。タイプ:

  • application/x-www-form-urlencoded
  • multipart/form-data

application/x-www-の場合form-urlencoded、$_FILES に相当するもの 配列 (返された配列のインデックス 1) は空になります。コンテンツの場合 型がサポートされていない場合、関数は InvalidArgumentException をスローします。

php://input

PHP では、php://input ストリームを介して生のリクエスト コンテンツを検査できます。これはバッファリングされたストリームであり、(PHP 7.4 以降では) 複数回読み取ることができます。ただし、multipart/form-data受信時は コンテンツの場合、PHP は少し破壊的になります。これには非常に正当な理由があります: バッファリング ファイルにより、ファイルの内容がディスクに 2 回書き込まれる可能性があります。 メモリ、ストレージ、I/O の使用量が増加します。

そのため、php://input を破壊的に消費するため、request_parse_body() を 2 回呼び出してはなりません。

$optionsパラメータ

request_parse_body() の $options パラメータを使用すると、次のパラメータに依存するのではなく、実行時にその動作を変更できます。ハードコーディングされた php.ini 設定。

  • 解析を試行する最大コンテンツ サイズの post_max_size を指定します。
  • 解析を試行するフォーム変数の数を制限するには、max_input_vars を指定します。 parse.
  • アップロードする個々のファイルのサイズを制限するには、upload_max_filesize を指定します。ハンドル。
  • 処理するファイル アップロードの数を制限するには、max_file_uploads を指定します。
  • 解析するファイル アップロードとフォーム データ変数の組み合わせを制限するには、max_multipart_body_parts を指定します。

以上がPHP 8.4 での HTTP 動詞の変更の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
php
ソース:zend.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート