DocumentsImagesMédiasOutils PDF

JSON en PHP Class en Ligne

Genere des classes PHP typees depuis ton JSON, directement dans le navigateur.

Processed in your browser

JSON vers classe PHP typee

PHP 8.x moderne

Genere du code avec la promotion de constructeur, les proprietes readonly et les proprietes typees selon les meilleures pratiques du PHP moderne.

100% prive

Ton JSON (qui peut contenir des donnees sensibles) est traite uniquement dans ton navigateur. Il n'est jamais envoye a aucun serveur.

Typage correct

Detecte automatiquement string, int, float, bool et null. Les champs optionnels sont marques comme nullable (?type).

Instantane

Classes PHP prates en quelques millisecondes. Sans inscription, sans attente, sans limites.

Trois étapes, sans complications

1

Colle ton JSON

Colle n'importe quel objet JSON, simple ou imbrique. L'outil analyse la structure et les types de donnees automatiquement.

2

Classe PHP generee

Tu obtiens une classe PHP avec des proprietes typees (PHP 7.4+), la promotion de constructeur (PHP 8.0+) et des methodes getter optionnelles.

3

Copie et utilise

Copie le code en un clic et colle-le dans ton projet. Fonctionne avec Laravel, Symfony ou du PHP pur.

Des questions ?

PHP 7.4 (sorti en novembre 2019) a introduit les proprietes typees, ce qui permet de declarer le type de chaque propriete directement dans la classe : public int $id; public string $name; public ?float $price;. C'est une amelioration fondamentale par rapport aux versions anterieures ou les types ne pouvaient etre documentes que dans PHPDoc. Les proprietes typees ameliorent la detection d'erreurs a l'execution, la lisibilite du code et permettent aux IDE de proposer une meilleure autocompletion. Le type nullable (avec ?) indique que la propriete peut etre null, utile pour les champs optionnels du JSON.

La promotion de constructeur (constructor property promotion), introduite dans PHP 8.0 (2020), permet de definir et d'assigner des proprietes directement dans les parametres du constructeur, eliminant ainsi la redundance. Au lieu de declarer la propriete, de la lister dans le constructeur et de l'assigner dans le corps, tu peux ecrire : public function __construct(public readonly string $name, public int $age) {}. Ca reduit drastiquement le code repetitif et c'est le schema prefere en PHP moderne, en particulier pour les Value Objects et les DTOs.

Des methodes getter standard sont generees en suivant la convention PHP : getName(), getId(), getPrice(). Les getters encapsulent l'acces aux proprietes privees ou protegees, ce qui permet d'ajouter de la logique de transformation plus tard sans changer l'interface publique de la classe. Si tu utilises la promotion de constructeur avec des proprietes publiques ou readonly, les getters sont optionnels. Pour les proprietes privees, les getters sont le seul moyen d'acceder a la valeur depuis l'exterieur de la classe.

Les modeles Eloquent etendent Illuminate\Database\Eloquent\Model et sont concus pour representer des enregistrements de base de donnees avec un ORM integre. Les classes PHP simples (POPOs, Plain Old PHP Objects) sont plus adaptees pour les DTOs (Data Transfer Objects), les reponses d'API, ou quand il n'y a pas de persistance impliquee. Si tu consommes une API externe et que tu veux modeliser la reponse JSON, une classe PHP simple generee avec cet outil est le bon choix. Les API Resources de Laravel (introduites dans Laravel 5.5) utilisent egalement des classes simples pour transformer les modeles Eloquent en JSON.

Pour chaque objet imbrique dans le JSON, une classe PHP separee est generee. Par exemple, si le JSON contient {"user": {"address": {"city": "Paris"}}}, trois classes sont generees : la classe racine avec la propriete $user de type User, la classe User avec la propriete $address de type Address, et la classe Address avec la propriete $city de type string. Ca suit le principe de responsabilite unique et permet de mapper correctement les structures d'API complexes. Les tableaux d'objets sont types comme array avec le type de l'element dans PHPDoc.

L'evolution de PHP 8.x, les API Resources de Laravel et le Serializer de Symfony

PHP a evolue de facon spectaculaire entre PHP 7.0 (2015) et PHP 8.3 (2023). PHP 7.4 a introduit les proprietes typees et l'operateur nullsafe. PHP 8.0 a apporte les union types, les named arguments, les expressions match et la promotion de constructeur. PHP 8.1 a ajoute les proprietes readonly, les enums natifs, les fibers et les intersection types. PHP 8.2 a introduit les classes readonly et les types en forme normale disjonctive. PHP 8.3 a complete le support readonly avec les classes anonymes. Cette evolution transforme PHP en un langage avec un typage statique optionnel comparable a TypeScript ou Kotlin.

Dans l'ecosysteme Laravel (le framework PHP le plus populaire avec plus de 75 millions de telechargements), les API Resources (introduites dans Laravel 5.5, 2017) sont la facon standard de transformer les modeles Eloquent en reponses JSON. Elles etendent Illuminate\Http\Resources\Json\JsonResource et permettent de controler precisement quels champs exposer. Pour le cote inverse (consommation d'API externes), les DTOs implementes comme des classes PHP simples sont le schema recommande. Des packages comme spatie/laravel-data (2021) combinent les deux concepts : une classe qui peut agir a la fois comme DTO et comme API Resource.

Le composant Serializer de Symfony (egalement utilise par API Platform, le framework PHP le plus avance pour les API REST/GraphQL) peut serialiser et deserialiser des objets PHP vers et depuis JSON, XML, YAML et CSV. Il utilise des annotations, des attributs PHP 8 ou une configuration YAML pour mapper les proprietes. JMS Serializer est une autre alternative populaire. Dans les projets qui consomment des API, le schema consistant a generer des classes PHP depuis du JSON puis a utiliser le Serializer de Symfony pour les hydrater (deserialisation) est un flux de travail professionnel qui separe clairement la couche transport (JSON) de la couche domaine (objets PHP).