Supongamos que queremos abstraer un conjunto de datos en PHP en una estructura. PHP, a diferencia de otros lenguajes de programación, no tiene una estructura nativa como el struct de C o el record de Delphi o Pascal. No obstante, tenemos los array, que en realidad en este lenguaje de programación son mapas. Eso significa que si tuvieramos que guardar una serie de variables en PHP podríamos construir un array con esos valores y trabajar con él.

<?php
function crear_persona($nombre, $apellidos, $dni)
{
    $persona = [
        'nombre' => $nombre,
        'apellidos' => $apellidos,
        'dni' => $dni
    ];
    return $persona;
}

$persona = crear_persona('John', 'Doe', '1234567890F');
echo '¡Hola ' . $persona['nombre']  . '!';

Hay otra forma más elegante de hacer esto, que es creando clases. No obstante, tal vez algunos consideren demasiado exagerado crear una clase simplemente para almacenar tres valores, especialmente si es un sistema grande y la clase sólo la van a usar para cuatro cosas y ya está. Para solucionar estas pequeñas molestias, existe una clase especial en PHP que se llama stdClass.

La clase stdClass es una clase vacía que no tiene ni atributos ni métodos. Los atributos los podemos añadir nosotros mismos a posteriori tras crear una instancia de esta enigmática a la vez que maravillosa clase. Por ejemplo, el código anterior podría reescribirse con clases de tipo stdClass como sigue:

<?php
function crear_persona($nombre, $apellidos, $dni)
{
    $persona = new stdClass;
    $persona->nombre = $nombre;
    $persona->apellidos = $apellidos;
    $persona->dni = $dni;
    return $persona;
}

$persona = crear_persona('John', 'Doe', '1234567890F');
echo '¡Hola ' . $persona->nombre . '!';

Como podemos ver, la stdClass es super cómoda de usar para pequeñas estructuras de datos que en otros lenguajes de programación crearíamos con registros, como un struct de C. Naturalmente, si tenemos planeado usar estas estructuras para algo más, y planeamos añadir métodos, stdClass se quedaría corto, tendríamos que crear una clase normal con sus métodos fijos, sus constructores y todo lo que queramos.

Hasta ahora siempre he usado el método de los arrays para guardar cualquier tipo de estructuras, pero desde que he descubierto stdClass, intento usarlo siempre que puedo en lugar de los arrays para guardar un conjunto de valores. Es una forma que a mi parecer es mucho más limpia que los array.