Waar o waar is $_JSON

Blog  — vr. 16 jun. 2023

Dit blogartikel is voor de programmeurs. Als u geen programmeur bent, dan denk ik dat het beter is dat u deze overslaat.

Dus, voordat we beginnen. Ik moet het toegeven, we gaan ons wagen op onbekend terrein met deze gedurfde uitlating van mij. Zet u schrap, want hier komt het, gewapend met een vleugje humor om de zaken luchtig te houden tijdens een zeer serieus technische vraagstuk;

$_JSON

Ja, u ziet het goed. Ik durfde het aan en zei het; $_JSON. U leest het hier als eerste.

Ik bedoel, we hebben $_POST voor wanneer PHP een CONTENT_TYPE detecteert van "application/x-www-form-urlencoded", en $_FILES voor wanneer PHP een CONTENT_TYPE detecteert van "multipart/form-data". Sterker nog, PHP kan zelfs $_POST en $_FILES tegelijkertijd vullen als de "multipart/form-data" dapper genoeg is om het te leveren.

Maar wanneer u JSON verstuurt, bereid u dan voor op een wilde rit. Nou ja, oké, dat heb ik misschien een beetje overdreven. Hoe dan ook, op zijn minst zou u het volgende moeten doen:

$raw_posted_json = file_get_contents('php://input');
$_JSON = json_decode($raw_posted_json, true);

En hoewel $_POST bedoeld is voor formuliergegevens, gebruiken we ook HTTP POST bij het versturen van JSON. En wanneer u CONTENT_TYPE instelt op "application/json", kunnen we veilig aannemen dat er geen "application/x-www-form-urlencoded" of "multipart/form-data" zal worden verzonden, toch? Men zou zelfs zo brutaal kunnen zijn om het volgende te gebruiken:

if ($_SERVER['REQUEST_METHOD'] === 'POST' &&
    isset($_SERVER["CONTENT_TYPE"]) &&
    $_SERVER["CONTENT_TYPE"] === 'application/json'
) {
    $raw_posted_json = file_get_contents('php://input');
    $_POST = json_decode($raw_posted_json, true);
}

Nu weet ik dat file_get_contents('php://input') niet alleen JSON kan verwerken. Maar JSON heeft in de loop der jaren een speciaal plekje veroverd in het hart van ontwikkelaars, vind ik. XML, nou ja, laten we het daar maar niet over hebben. Maar JSON is praktisch de standaard geworden voor API-uitwisselingen en zelfs wanneer de frontend met zijn eigen backend praat. JavaScript is er ook zeker niet vies van.

Dus, wordt 2023 het jaar van officiële ondersteuning van $_JSON in PHP? Van mij zou het absoluut mogen.