Skip to content
Gérits Aurélien edited this page Feb 13, 2026 · 2 revisions

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

Liste des méthodes

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).

Usage de base

  1. 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);
  1. 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);

Sécurité & Robustesse

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.

Exemple concret : Validation d'un Webhook

$json = new JSON();
$payload = file_get_contents('php://input');

if (!$json->isValid($payload)) {
    Header::setStatus(400);
    die("Payload JSON corrompu.");
}

$data = $json->decode($payload);

Clone this wiki locally