Heim > Backend-Entwicklung > PHP-Tutorial > Änderungen an HTTP-Verben in PHP 8.4

Änderungen an HTTP-Verben in PHP 8.4

尊渡假赌尊渡假赌尊渡假赌
Freigeben: 2024-12-24 16:47:33
nach vorne
889 Leute haben es durchsucht

PHP 8.4 wurde im November veröffentlicht, und Sie und Ihr Team haben keinen Zweifel Ich habe hart daran gearbeitet, die neuen Funktionen, veralteten Elemente usw. zu verstehen Änderungen, die diese neueste Version der Sprache begleiten. Das enthält Änderungen an Nicht-POST-HTTP-Verben.

In diesem Blog gehe ich Durch den Hintergrund von HTTP-Verben in PHP wird erklärt, warum HTTP Änderungen an Verben in PHP 8.4 sind von Bedeutung. Anschließend stelle ich einen Leitfaden für Entwickler zur Verfügung als Referenz bei der Implementierung dieser Änderungen in ihrem Code.

截屏2024-12-24 16.43.04.png

HTTP-Verben in PHP: Hintergrund

PHP wurde mit Blick auf das Web entwickelt und unterstützte die Formularverarbeitung früheste Tage. Ursprünglich gab es in HTTP im Wesentlichen nur zwei Methoden, über die ein Browser eine Webseite anfordern könnte: per GET oder POST.  Während HTML-Formulare immer noch nur diese beiden Methoden wirklich unterstützen, JavaScript kann HTTP-Anfragen mit jeder HTTP-Methode senden. und eine Reihe von Toolkits (z. B. HTMX) können dies sogar für Entwickler nahtlos bewältigen.

GET- und POST-HTTP-Methoden

Eine GET-Anfrage übergibt Formulardaten über die Abfragezeichenfolge der URL. Dies bedeutet, dass die Formularergebnisse mit Lesezeichen versehen, wiederholt und sogar gespeichert werden können zwischengespeichert. Aus diesem Grund werden GET-Anfragen üblicherweise nur für Aktionen verwendet die den Status anfordern, ohne den Status zu ändern: Suchanfragen, Ergebnis Sortierung, Ergebnisfilterung, Paginierung usw.

Wenn Sie eine Leistung erbringen möchten eine Aktion, die Änderungen innerhalb einer Anwendung vornehmen könnte – z. B. Bearbeiten eines Warenkorbs, Senden einer Support-Nachricht, Hochladen einer Bild usw. – Sie verwenden die POST-HTTP-Methode. POST-Anfragen sind gelten als nicht idempotent, was bedeutet, dass sie nicht zwischengespeichert werden können und dies auch nicht tun sollten wiederholt werden, da sie Nebenwirkungen haben. Diese Auswirkungen können Einfügungen, Änderungen oder Löschungen in einer Datenbank, Dateisystemvorgänge, Webanfragen oder etwas anderes bedeuten.

In Um die Verarbeitung von Formulardaten zu automatisieren, bietet PHP mehrere superglobale Variablen, die aus der eingehenden Anfrage gefüllt werden. $_GET wird mit URL-Abfragezeichenfolgenargumenten gefüllt und kann von jeder Anforderungsmethode aus gefüllt werden. $_POST wird jedoch nur aus dem Hauptteil von POST-Anfragen gefüllt, die mit dem Inhaltstyp application/x-www-form-urlencoded erstellt wurden, was etwa so aussehen könnte:

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
Nach dem Login kopieren
Nach dem Login kopieren


PHP wird es tun Nehmen Sie das und füllen Sie das Superglobal $_POST so auf, dass es wie folgt aussieht:

<?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'],
];
Nach dem Login kopieren
Nach dem Login kopieren


Die Tatsache, dass PHP dies hinter den Kulissen tut Sie sind Teil dessen, was das Erlernen und den Einstieg in PHP so einfach macht.

Darüber hinaus kann es auch den Inhaltstyp multipart/form-data verarbeiten, der es einem Browser ermöglicht, neben der Bereitstellung von Formulardaten auch Dateien hochzuladen. Dabei werden zusätzliche $_FILES aufgefüllt superglobal, das Informationen zu den hochgeladenen Dateien bereitstellt; Entwickler können diese Dateien dann vor dem Speichern validieren und vorverarbeiten sie an einem festen Ort.

Andere HTTP-Methoden

Es gibt viel mehr HTTP-Methoden als GET und POST und Entwickler für das Web Oft möchten Sie verschiedene Methoden wählen, um den Kontext für das bereitzustellen, was Sie versuchen Folgendes zu tun:

  • PUT wird häufig verwendet, um anzuzeigen, dass die Daten vorhandene Daten ersetzen sollen.
  • PATCH wird häufig verwendet, um anzuzeigen, dass eine teilweise Aktualisierung eines vorhandenen Datensatzes erfolgt erstellt wird.
  • DELETE wird verwendet, um anzugeben, dass der übermittelte Datensatz oder Inhalt gelöscht oder als gelöscht markiert werden soll.

Während Browser unterstützen diese (noch!) nicht nativ, viele JavaScript-Frameworks und -Bibliotheken schon.

Aber Es gibt einen Haken: PHP verarbeitet diese Anfragen nicht automatisch. In Tatsächlich müssen Sie das Parsen dieser Daten vollständig selbst übernehmen kann äußerst problematisch sein, wenn Sie auch mit Datei-Uploads beginnen sowie Formulardaten. (Rollen Sie niemals Ihre eigenen Parser!)

Änderungen an Nicht-POST-HTTP-Verben

PHP 8.4 führt die Methode request_parse_body() ein:

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
Nach dem Login kopieren
Nach dem Login kopieren


Die Die Funktion analysiert die eingehende Anfrage auf die gleiche Weise wie immer für POST-Anfragen, ermöglicht Ihnen jedoch die Angabe alternativer Variablen für Speichern Sie die Formulardaten und Datei-Uploads in (oder überschreiben Sie die Superglobals, wenn Sie es vorziehen). Sie können das Verhalten des Parsers auch über das Argument $options ändern, mehr dazu weiter unten.

Ein häufiges Muster wird wahrscheinlich sein:

<?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'],
];
Nach dem Login kopieren
Nach dem Login kopieren


(Obwohl Sie Wenn Sie ein Framework verwenden, erwarten Sie, dass das Framework sich um dieses Detail für Sie kümmert.)

Das ist buchstäblich die Gesamtheit des Features. Eine einfach bereitzustellende Funktion schlüsselfertiges Verhalten, mit dem Sie als PHP-Entwickler bereits vertraut sind. Es Viel besser geht es nicht!

HTTP-Verben in PHP 8.4: Ein Entwicklerhandbuch

Jetzt dass wir die Änderungen an HTTP-Verben in PHP 8.4 besprochen haben, lassen Sie uns Sehen Sie sich einige Beispiele an, wie Sie diese nutzen und anwenden können Aktualisierungen in Ihrem Code.

Unterstützte Inhaltstypen

Genau wie POST-Anfragen analysiert request_parse_body() nur Anfragen mit dem folgenden Inhalt Typen:

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

Bei application/x-www- form-urlencoded, das $_FILES-Äquivalent Das Array (Index 1 im zurückgegebenen Array) ist leer. Wenn der Inhalt Wenn der Typ nicht unterstützt wird, löst die Funktion eine InvalidArgumentException aus.

php://input

PHP ermöglicht Ihnen die Überprüfung des Rohinhalts der Anfrage über den php://input-Stream. Dabei handelt es sich um einen gepufferten Stream, der (ab PHP 7.4) mehrfach gelesen werden kann. Allerdings beim Empfang von Multipart-/Formulardaten Inhalt wird PHP aus einem sehr guten Grund etwas destruktiv: Pufferung Dateien könnten dazu führen, dass der Dateiinhalt zweimal auf die Festplatte geschrieben wird, Dies führt zu mehr Arbeitsspeicher, Speicherplatz und E/A-Nutzung.

Daher DARF request_parse_body() NICHT zweimal aufgerufen werden, da es php://input destruktiv verbraucht.

$options Parameter

Der $options-Parameter für request_parse_body() ermöglicht es Ihnen, sein Verhalten zur Laufzeit zu ändern, anstatt sich auf fest codierte Parameter zu verlassen php.ini-Konfiguration.

  • Geben Sie post_max_size für die maximale Inhaltsgröße an, die analysiert werden soll.
  • Geben Sie max_input_vars an, um zu begrenzen, wie viele Formularvariablen analysiert werden sollen.
  • Geben Sie die upload_max_filesize an, um die Größe einzelner Dateien zu begrenzen handle.
  • Geben Sie „max_file_uploads“ an, um zu begrenzen, wie viele Datei-Uploads verarbeitet werden.
  • Geben Sie „max_multipart_body_parts“ an, um die Kombination von Datei-Uploads und Formulardatenvariablen zu begrenzen, die analysiert werden.

Das obige ist der detaillierte Inhalt vonÄnderungen an HTTP-Verben in PHP 8.4. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
php
Quelle:zend.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage