V najnovšej verzii PHP 8.4, ktorá vyjde teraz v novembri, nájdeme novú funkciu request_parse_body
.
Pri posielaní formulárov PHP automaticky napĺňa dátami tzv. superglobálne premenné $_POST
a $_FILES
. Toto sa však deje len pri POST požiadavkách. Nová funkcia request_parse_body
aj pre PUT a PATCH požiadavky.
Novú funkciu si môžeme vyskúšať pomocou preddefinovaného Docker obrazu.
$ docker pull php:8.4.0RC3-zts-alpine3.20
Spustíme si obraz v interaktívnom móde. Namapujeme si port 8080 z daného Docker obrazu na port v našom operačnom systéme.
$ docker run -it -p 127.0.0.1:8080:8080/tcp --entrypoint /bin/sh 088532e963c0
Presunieme sa do domovského adresára kde si pomocou vi
vytvoríme jednoduchý PHP script.
$ cd /home $ vi test.php
<?php [$_POST, $_FILES] = request_parse_body(); foreach($_POST as $key => $value) echo "$key: $value";
Spustíme si lokálny PHP server.
$ php -S 0.0.0.0:8080 test.php &
Nakoniec pomocou nástroja httpie vygenerujeme PUT požiadavku. Požiadavku spúšťame z terminálu v našom domovskom operačnom systéme.
$ http -f PUT 127.0.0.1:8080 message="hello there" HTTP/1.1 200 OK Connection: close Content-type: text/html; charset=UTF-8 Date: Thu, 31 Oct 2024 09:08:12 GMT Host: 127.0.0.1:8080 X-Powered-By: PHP/8.4.0RC3 message: hello there