PHP Conference Kansai 2025

La clase stdClass

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

Introducción

Una clase genérica vacía con propiedades dinámicas.

Los objetos de esta clase pueden ser instanciados con el operador new o creados utilizando la conversión en objeto. Varias funciones PHP crean asimismo instancias de esta clase, por ejemplo json_decode(), mysqli_fetch_object() o PDOStatement::fetchObject().

Aunque no implementa __get()/__set() esta clase permite propiedades dinámicas y no requiere el atributo #[\AllowDynamicProperties].

No es una clase base porque PHP no tiene un concepto de clase base universal. Sin embargo, es posible crear una clase personalizada que extienda stdClass y que herede así la funcionalidad de las propiedades dinámicas.

Sinopsis de la Clase

class stdClass {
}

Esta clase no tiene métodos ni propiedades por omisión.

Ejemplos

Ejemplo #1 Creado a partir de una conversión de tipo en objeto

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

El resultado del ejemplo sería:

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

Ejemplo #2 Creado como resultado de json_decode()

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

El resultado del ejemplo sería:

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

Ejemplo #3 Declaración de propiedades dinámicas

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

El resultado del ejemplo sería:

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

User Contributed Notes 1 note

up
9
Mats M
2 years 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