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