Rumah > pembangunan bahagian belakang > tutorial php > Perubahan Kata Kerja HTTP dalam PHP 8.4

Perubahan Kata Kerja HTTP dalam PHP 8.4

尊渡假赌尊渡假赌尊渡假赌
Lepaskan: 2024-12-24 16:47:33
ke hadapan
889 orang telah melayarinya

PHP 8.4 dikeluarkan pada bulan November, dan anda serta pasukan anda tidak ragu-ragu telah bekerja keras memahami ciri baharu, penamatan dan perubahan yang mengiringi lelaran terbaru bahasa ini. ini termasuk perubahan pada kata kerja HTTP bukan POST.

Dalam blog ini, saya berjalan melalui latar belakang kata kerja HTTP dalam PHP, menjelaskan mengapa HTTP perubahan kata kerja dalam perkara PHP 8.4. Saya kemudian menyediakan panduan untuk pembangun untuk rujukan apabila melaksanakan perubahan ini dalam kod mereka.

截屏2024-12-24 16.43.04.png

Kata Kerja HTTP dalam PHP: Latar Belakang

PHP dibangunkan dengan mengambil kira web dan pengendalian borang yang disokong daripadanya hari-hari terawal. Pada asalnya dalam HTTP, pada dasarnya hanya terdapat dua kaedah melalui mana penyemak imbas boleh meminta halaman web: melalui GET atau POST.  Walaupun bentuk HTML masih menyokong kedua-dua kaedah ini, JavaScript mempunyai keupayaan untuk menghantar permintaan HTTP menggunakan mana-mana kaedah HTTP, dan beberapa kit alat (cth. HTMX) malah boleh mengendalikan perkara ini dengan lancar untuk pembangun.

GET and POST HTTP Methods

Permintaan GET menghantar data borang melalui rentetan pertanyaan URL. Ini bermakna bahawa hasil borang boleh ditanda buku, diulang dan juga dicache. Oleh sebab itu, permintaan GET biasanya hanya digunakan untuk tindakan yang meminta keadaan tanpa mengubah keadaan: carian, hasil pengisihan, penapisan hasil, penomboran, dsb.

Jika anda ingin melakukan tindakan yang mungkin membuat perubahan dalam aplikasi — cth., memproses troli beli-belah, menghantar mesej sokongan, memuat naik imej, dsb. — anda akan menggunakan kaedah HTTP POST. Permintaan POST ialah dianggap bukan idempoten, bermakna mereka tidak boleh di-cache dan tidak sepatutnya diulang, kerana ia mempunyai kesan sampingan. Kesan tersebut mungkin bermakna sisipan, perubahan atau pemadaman dalam pangkalan data, operasi sistem fail, permintaan web atau sesuatu yang lain.

Dalam untuk mengautomasikan pengendalian data borang, PHP menyediakan beberapa pembolehubah superglobal yang ia diisi daripada permintaan masuk. $_GET diisi dengan argumen rentetan pertanyaan URL dan boleh diisi daripada sebarang kaedah permintaan. $_POST, walau bagaimanapun, hanya diisi daripada kandungan permintaan POST yang dibuat menggunakan aplikasi jenis kandungan/x-www-form-urlencoded, yang mungkin kelihatan seperti ini:

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
Salin selepas log masuk


PHP akan ambil itu dan isikan superglobal $_POST supaya ia menjadi seperti berikut:

<?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'],
];
Salin selepas log masuk


Fakta bahawa PHP melakukan ini di sebalik tabir untuk anda adalah sebahagian daripada perkara yang menjadikan PHP begitu mudah untuk dipelajari dan dimulakan.

Selain itu, ia juga boleh mengendalikan jenis kandungan multipart/form-data, yang membolehkan penyemak imbas memuat naik fail selain menyediakan data borang. Apabila ia berbuat demikian, ia akan mengisi $_FILES tambahan superglobal, yang menyediakan maklumat mengenai fail yang dimuat naik; pembangun kemudian boleh mengesahkan dan pra-memproses fail tersebut sebelum menyimpan mereka di lokasi tetap.

Kaedah HTTP Lain

Terdapat lebih banyak kaedah HTTP daripada GET dan POST, dan pembangun untuk web selalunya akan mahu memilih kaedah yang berbeza untuk memberikan konteks kepada apa mereka cuba lakukan:

  • PUT sering digunakan untuk menunjukkan bahawa data harus menggantikan data sedia ada.
  • PATCH sering digunakan untuk menunjukkan bahawa kemas kini separa kepada rekod sedia ada adalah sedang dibuat.
  • DELETE digunakan untuk menunjukkan rekod atau kandungan yang diserahkan harus dipadamkan atau ditandakan sebagai dipadamkan.

Walaupun penyemak imbas tidak menyokong ini secara asli (belum!), banyak rangka kerja dan perpustakaan JavaScript melakukannya.

Tetapi ada tangkapan: PHP tidak mengendalikan permintaan ini secara automatik. Dalam sebenarnya, anda perlu mengendalikan penghuraian ini sepenuhnya sendiri, yang mana boleh menjadi sangat bermasalah apabila anda juga mula mengendalikan muat naik fail sebagai serta data borang. (Jangan sekali-kali melancarkan penghurai anda sendiri!)

Perubahan kepada Kata Kerja HTTP Bukan POST

PHP 8.4 memperkenalkan kaedah request_parse_body():

[$_POST, $_FILES] = request_parse_body(?array $options = null);
Salin selepas log masuk


The fungsi menghuraikan permintaan masuk dengan cara yang sama seperti yang selalu ada untuk permintaan POST, tetapi membolehkan anda menentukan pembolehubah ganti kepada simpan data borang dan muat naik fail dalam (atau tulis ganti superglobal, jika anda lebih suka). Anda juga boleh mengubah gelagat penghurai melalui hujah $options, dengan lebih lanjut mengenainya di bawah.

Corak biasa mungkin:

<?php
if (in_array($_SERVER['REQUEST_METHOD'], ['PUT', 'PATCH', 'DELETE'], true)) {
    [$_POST, $_FILES] = request_parse_body();
}
Salin selepas log masuk


(Walaupun jika anda sedang menggunakan rangka kerja, harapkan rangka kerja menjaga butiran itu untuk anda.)

Itu secara literal keseluruhan ciri. Fungsi mudah untuk disediakan tingkah laku turnkey yang anda sudah biasa dengan sebagai pembangun PHP. Ia tidak menjadi lebih baik daripada ini!

Kata Kerja HTTP dalam PHP 8.4: Panduan Pembangun

Sekarang bahawa kita telah membincangkan perubahan kepada kata kerja HTTP dalam PHP 8.4, mari lihat beberapa contoh untuk cara anda boleh menggunakan dan menerapkannya kemas kini dalam kod anda.

Jenis Kandungan yang Disokong

Sama seperti permintaan POST, request_parse_body() hanya akan menghuraikan permintaan dengan kandungan berikut jenis:

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

Dalam kes permohonan/x-www- form-urlencoded, $_FILES-setara tatasusunan (indeks 1 dalam tatasusunan yang dikembalikan) akan kosong. Jika kandungan jenis tidak disokong, fungsi akan membuang InvalidArgumentException.

php://input

PHP membolehkan anda memeriksa kandungan permintaan mentah melalui aliran php://input. Ini ialah strim buffer yang boleh (sehingga PHP 7.4) dibaca beberapa kali. Walau bagaimanapun, apabila menerima multipart/form-data kandungan, PHP menjadi agak merosakkan, atas sebab yang sangat baik: penimbalan fail boleh menyebabkan kandungan fail ditulis ke cakera dua kali, membawa kepada lebih banyak memori, storan dan penggunaan I/O.

Oleh itu, request_parse_body() TIDAK MESTI dipanggil dua kali, kerana ia akan menggunakan php://input secara merosakkan.

$options Parameter

Parameter $options to request_parse_body() membolehkan anda mengubah tingkah lakunya pada masa jalan, bukannya bergantung pada konfigurasi php.ini berkod keras.

  • Nyatakan post_max_size untuk saiz kandungan maksimum yang akan cuba dihuraikan.
  • Nyatakan max_input_vars untuk mengehadkan bilangan pembolehubah bentuk yang akan cuba dihuraikan. parse.
  • Nyatakan upload_max_filesize untuk mengehadkan saiz individu fail yang akan dikendalikannya.
  • Nyatakan max_file_uploads untuk mengehadkan bilangan muat naik fail yang akan dikendalikannya.
  • Nyatakan max_multipart_body_parts untuk mengehadkan gabungan muat naik fail dan pembolehubah data borang yang akan dihuraikan.

Atas ialah kandungan terperinci Perubahan Kata Kerja HTTP dalam PHP 8.4. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
php
sumber:zend.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan