-
Notifications
You must be signed in to change notification settings - Fork 0
Json
La classe JSON fournit une interface orientée objet pour manipuler le format JSON. Elle sécurise les opérations d'encodage et de décodage en forçant la levée d'exceptions en cas d'erreur (JSON_THROW_ON_ERROR) et assure la journalisation automatique des échecs de parsing.
Namespace : Magepattern\Component\HTTP\JSON
| Méthode | Paramètres | Retour | Description |
|---|---|---|---|
| __construct() | array $customOptions | void | Initialise la classe avec des options de décodage/encodage. |
| decode() | string $json, array $opt | mixed | Décode une chaîne JSON en tableau (par défaut) ou objet. |
| encode() | mixed $val, array $opt | ?string | Encode des données PHP en JSON (Unicode préservé). |
| isValid() | string $json | bool | Vérifie la syntaxe JSON (utilise json_validate en PHP 8.3+). |
| fromFile() | string $path, array $opt | mixed | Lit et décode directement un fichier .json. |
| toFile() | string $path, mixed $val | bool | Encode et écrit des données dans un fichier (avec LOCK_EX). |
- Encodage et Décodage sécurisés Contrairement aux fonctions natives qui peuvent retourner false sans explications, cette classe logue précisément pourquoi le JSON est invalide.
use Magepattern\Component\HTTP\JSON;
$jsonHandler = new JSON();
// Encodage
$data = ['id' => 1, 'name' => 'Aurelien'];
$jsonString = $jsonHandler->encode($data);
// Décodage
$array = $jsonHandler->decode($jsonString);- Manipulation de fichiers de configuration Idéal pour charger des fichiers de paramètres ou sauvegarder des états.
$json = new JSON();
// Charger une config
$config = $json->fromFile(__DIR__ . '/config/app.json');
// Sauvegarder en mode "Pretty Print" (lisible par l'humain)
$json->toFile(__DIR__ . '/config/app.json', $config, true);Gestion des Exceptions : La classe utilise JSON_THROW_ON_ERROR, transformant les avertissements silencieux de PHP en erreurs capturables via try/catch.
Support Unicode : Par défaut, JSON_UNESCAPED_UNICODE est utilisé pour éviter que les caractères accentués ne soient transformés en séquences hexadécimales (ex: é reste é au lieu de \u00e9).
Validation native : La méthode isValid() exploite les optimisations moteur de PHP 8.3 si elles sont présentes, offrant une vérification de syntaxe sans consommation mémoire inutile.
Intégrité des fichiers : toFile utilise LOCK_EX pour éviter les corruptions de fichiers lors d'écritures simultanées.
$json = new JSON();
$payload = file_get_contents('php://input');
if (!$json->isValid($payload)) {
Header::setStatus(400);
die("Payload JSON corrompu.");
}
$data = $json->decode($payload);