PHP 8.4.1 Released!

La classe stdClass

(PHP 4, PHP 5, PHP 7, PHP 8)

Introduction

Une classe générique vide avec des propriétés dynamiques.

Les objets de cette classe peuvent être instanciés avec l'opérateur new ou créés par en utilisant la conversion en objet. Plusieurs fonctions PHP créent également des instances de cette classe, par exemple json_decode(), mysqli_fetch_object() ou PDOStatement::fetchObject().

Bien que n'implémentant pas __get()/__set() cette classe autorise les propriétés dynamiques et ne nécessite pas l'attribut #[\AllowDynamicProperties].

Ce n'est pas une classe de base car PHP n'a pas de concept de classe de base universelle. Cependant, il est possible de créer une classe personnalisée qui étend stdClass et qui hérite ainsi de la fonctionnalité des propriétés dynamiques.

Synopsis de la classe

class stdClass {
}

Cette classe n'a pas de méthode ni de propriété par défaut.

Exemples

Exemple #1 Créé à la suite d'une conversion de type en objet

<?php
$obj
= (object) array('foo' => 'bar');
var_dump($obj);

L'exemple ci-dessus va afficher :

object(stdClass)#1 (1) {
  ["foo"]=>
  string(3) "bar"
}

Exemple #2 Créé en tant que résultat de json_decode()

<?php
$json
= '{"foo":"bar"}';
var_dump(json_decode($json));

L'exemple ci-dessus va afficher :

object(stdClass)#1 (1) {
  ["foo"]=>
  string(3) "bar"
}

Exemple #3 Déclaration de propriétés dynamiques

<?php
$obj
= new stdClass();
$obj->foo = 42;
$obj->{1} = 42;
var_dump($obj);

L'exemple ci-dessus va afficher :

object(stdClass)#1 (2) {
  ["foo"]=>
  int(42)
  ["1"]=>
  int(42)
}
add a note

User Contributed Notes 1 note

up
3
Mats M
1 year ago
In PHP8 this has been changed

https://www.php.net/manual/en/migration80.incompatible.php

A number of warnings have been converted into Error exceptions:

Attempting to write to a property of a non-object. Previously this implicitly created an stdClass object for null, false and empty strings.

So if you add properties to a $var, you first need to make it a stdClass()

$var = new stdClass();
$var->propp1 = "nice";
$var->propp2 = 1234;
To Top