stdClass en PHP : la magie de l'objet vide
Si vous avez déjà écrit en PHP, vous avez sûrement rencontré cette situation : vous devez créer rapidement un objet, mais vous n'avez pas de classe prête à l'emploi. Ou vous recevez des données d'une base de données, et elles arrivent sous forme d'objet, mais vous ne comprenez pas d'où viennent ses propriétés. Cela vous dit quelque chose ? Bienvenue dans le monde de stdClass — la classe intégrée de PHP qui fonctionne comme un « conteneur vide » pour les données.
Dans cet article, nous allons voir ce qu'est stdClass, à quoi il sert, comment le créer et l'utiliser. Vous découvrirez en quoi il diffère d'un tableau classique, et vous obtiendrez des exemples pratiques que vous pourrez immédiatement appliquer dans votre code. C'est parti !
Qu'est-ce que stdClass ?
stdClass (abréviation de « standard class ») est une classe vide intégrée en PHP. Elle n'a ni méthodes, ni propriétés, ni comportement prédéfini. Elle existe uniquement pour vous permettre de créer un objet « à la volée » sans écrire votre propre classe.
En termes simples, c'est un objet anonyme que vous pouvez remplir de propriétés à tout moment. Si vous avez déjà écrit $obj = new stdClass();, alors vous l'avez déjà utilisé.
<?php$obj = new stdClass();$obj->name = "Alexei";$obj->age = 28;echo $obj->name; // Affiche : Alexei?>Dans cet exemple, nous avons créé un objet stdClass et lui avons ajouté dynamiquement deux propriétés. Aucune classe n'a besoin d'être déclarée à l'avance — PHP crée tout tout seul.
À quoi sert stdClass ?
À première vue, stdClass peut sembler être une béquille. Pourquoi utiliser un objet quand on peut prendre un tableau ? En réalité, il a plusieurs utilisations importantes :
- Travailler avec JSON. Lorsque vous décodez du JSON avec
json_decode()sans second argument, PHP retourne un objetstdClass. C'est le comportement standard. - Structures de données temporaires. Si vous devez rapidement transmettre un ensemble de données sous forme d'objet (par exemple, à une fonction qui attend un objet),
stdClassest le choix idéal. - Compatibilité avec les API. De nombreuses bibliothèques et frameworks attendent des objets, pas des tableaux.
stdClasspermet de s'adapter facilement. - Prototypage. Lorsque vous écrivez un prototype et ne voulez pas perdre de temps à créer une classe complète,
stdClassvous sauve.
Il est important de comprendre : stdClass n'est pas conçu pour une logique complexe. Si vous avez besoin de méthodes, d'héritage ou d'encapsulation — créez votre propre classe.
Comment créer un objet stdClass ?
Il existe plusieurs façons de créer un objet stdClass. Examinons chacune d'elles.
1. Via l'opérateur new
La façon la plus évidente est d'utiliser new stdClass() :
<?php$user = new stdClass();$user->name = "Maria";$user->email = "maria@example.com";?>2. Depuis JSON
Lors du décodage de JSON avec json_decode() (sans le drapeau true), vous obtenez un stdClass :
<?php$json = '{"name":"Ivan","age":30}';$obj = json_decode($json);echo $obj->name; // Ivanecho get_class($obj); // stdClass?>3. Conversion de type (type casting)
Vous pouvez convertir un tableau en objet avec (object) :
<?php$array = ["name" => "Olga", "city" => "Moscou"];$obj = (object) $array;echo $obj->city; // Moscou?>Notez : lors de la conversion d'un tableau avec des clés numériques, les clés deviendront inaccessibles (PHP les transforme en propriétés, mais il faudra y accéder via des accolades).
stdClass vs tableau : que choisir ?
C'est une question éternelle. Comparons :