stdClass en PHP: qué es y cómo usarlo (tutorial)

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

stdClass en PHP: la magia del objeto vacío



Si alguna vez has programado en PHP, seguro te has encontrado con esta situación: necesitas crear un objeto rápidamente, pero no tienes una clase lista. O recibes datos de la base de datos y llegan como un objeto, pero no entiendes de dónde vienen sus propiedades. ¿Te suena familiar? Bienvenido al mundo de stdClass — la clase incorporada de PHP que funciona como un «contenedor vacío» para datos.



En este artículo, analizaremos qué es stdClass, para qué sirve, cómo crearlo y usarlo. Aprenderás en qué se diferencia de un array normal y obtendrás ejemplos prácticos que puedes aplicar directamente en tu código. ¡Vamos allá!



¿Qué es stdClass?



stdClass (abreviatura de «standard class») es una clase vacía incorporada en PHP. No tiene métodos, propiedades ni comportamiento predefinido. Solo existe para que puedas crear un objeto «sobre la marcha» sin escribir tu propia clase.



En pocas palabras, es un objeto anónimo que puedes llenar con propiedades en cualquier momento. Si alguna vez escribiste $obj = new stdClass();, ya lo has usado.



<?php$obj = new stdClass();$obj->name = "Alexei";$obj->age = 28;echo $obj->name; // Muestra: Alexei?>


En este ejemplo, creamos un objeto stdClass y le agregamos dinámicamente dos propiedades. No es necesario declarar ninguna clase de antemano — PHP lo crea todo por sí mismo.



¿Para qué sirve stdClass?



A primera vista, puede parecer que stdClass es un parche. ¿Para qué usar un objeto si puedes usar un array? En realidad, tiene varios usos importantes:



  • Trabajar con JSON. Cuando decodificas JSON con json_decode() sin el segundo argumento, PHP devuelve un objeto stdClass. Este es el comportamiento estándar.
  • Estructuras de datos temporales. Si necesitas pasar rápidamente un conjunto de datos como objeto (por ejemplo, a una función que espera un objeto), stdClass es la opción ideal.
  • Compatibilidad con API. Muchas bibliotecas y frameworks esperan objetos, no arrays. stdClass te permite adaptarte fácilmente.
  • Prototipado. Cuando estás escribiendo un prototipo y no quieres perder tiempo creando una clase completa, stdClass te salva.


Es importante entender: stdClass no está diseñado para lógica compleja. Si necesitas métodos, herencia o encapsulación, crea tu propia clase.



¿Cómo crear un objeto stdClass?



Puedes crear un objeto stdClass de varias maneras. Veamos cada una.



1. Mediante el operador new

La forma más obvia es usar new stdClass():



<?php$user = new stdClass();$user->name = "María";$user->email = "maria@example.com";?>


2. Desde JSON

Al decodificar JSON con json_decode() (sin la bandera true) obtienes un stdClass:



<?php$json = '{"name":"Iván","age":30}';$obj = json_decode($json);echo $obj->name; // Ivánecho get_class($obj); // stdClass?>


3. Conversión de tipo (type casting)

Puedes convertir un array en un objeto usando (object):



<?php$array = ["name" => "Olga", "city" => "Moscú"];$obj = (object) $array;echo $obj->city; // Moscú?>


Ten en cuenta: al convertir un array con claves numéricas, las claves se vuelven inaccesibles (PHP las transforma en propiedades, pero para acceder a ellas tendrás que usar llaves).



stdClass vs array: ¿qué elegir?



Esta es una pregunta eterna. Comparemos:



Blogs

Book Recommendations

Criterio stdClass