Inicio » Blog » Iteración de objetos en PHP

Iteración de objetos en PHP

Bienvenido a una nueva lección de nuestro curso básico de PHP 8. Hoy nos metemos con la iteración de objetos, una técnica súper útil para explorar las propiedades de tus objetos como si fueran un mapa. Si ya manejas clases y herencia, esto te dará más control sobre tus datos. Todo va a ser claro, práctico y con ejemplos que te van a flipar. ¡Empecemos!

¿Qué es la iteración de objetos?

Iterar un objeto significa recorrer sus propiedades (atributos) una por una, como si hojeas un cuaderno para ver cada página. En PHP, puedes usar un bucle foreach para acceder a las propiedades públicas de un objeto desde fuera o a todas (públicas, privadas, protegidas) desde dentro de la clase. Es ideal para inspeccionar datos o hacer operaciones con ellos.

La receta básica para iterar es esta:

foreach ($objeto as $clave => $valor) {
    // Hacer algo con $clave (nombre de la propiedad) y $valor (su valor)
}
  • Fuera de la clase: Solo ves propiedades public.
  • Dentro de la clase: Puedes ver todo (public, private, protected).

Probando iteración de objetos

¡Manos a la obra! Crea un archivo iteracion_objetos.php en curso_php8 (dentro de C:\xampp\htdocs) y prueba esto:

Ejemplo 1: Clase Laptop

<?php
    class Laptop {
        public $marca;
        public $modelo;
        public $color;
        private $serie;

        public function __construct($marca, $modelo, $color, $serie) {
            $this->marca = $marca;
            $this->modelo = $modelo;
            $this->color = $color;
            $this->serie = $serie;
        }

        public function iterarLaptop() {
            echo "Iterando desde dentro de la clase Laptop:<br>";
            foreach ($this as $clave => $valor) {
                echo "$clave => $valor<br>";
            }
        }
    }

    $laptop = new Laptop("Apple", "MacBook Pro", "Blanco", "2131234212");

    // Iterar fuera de la clase
    echo "Iterando desde fuera de la clase Laptop:<br>";
    foreach ($laptop as $clave => $valor) {
        echo "$clave => $valor<br>";
    }

    echo "<br>";

    // Iterar dentro de la clase
    $laptop->iterarLaptop();
?>

Abre http://localhost/curso_php8/iteracion_objetos.php. Verás algo como:

Iterando desde fuera de la clase Laptop:
marca => Apple
modelo => MacBook Pro
color => Blanco

Iterando desde dentro de la clase Laptop:
marca => Apple
modelo => MacBook Pro
color => Blanco
serie => 2131234212

¿Qué pasó?

  • Fuera: Solo vimos las propiedades public (marca, modelo, color). La propiedad private $serie está oculta por encapsulación.
  • Dentro: El método iterarLaptop() ve todo, incluyendo $serie, porque está dentro de la clase.

Ejemplo 2: Clase Persona

<?php
    class Persona {
        public $nombre;
        public $edad;

        public function __construct($nombre, $edad) {
            $this->nombre = $nombre;
            $this->edad = $edad;
        }
    }

    $persona1 = new Persona("Juan", 30);
    echo "Iterando objeto Persona:<br>";
    foreach ($persona1 as $clave => $valor) {
        echo "$clave: $valor<br>";
    }
?>

Resultado:

Iterando objeto Persona:
nombre: Juan
edad: 30

¿Qué pasó?

Iteramos $persona1 y mostramos sus propiedades públicas directamente.

Ejemplos prácticos para brillar

Ejemplo: Lista de estudiantes

<?php
    class Estudiante {
        public $nombre;
        public $curso;

        public function __construct($nombre, $curso) {
            $this->nombre = $nombre;
            $this->curso = $curso;
        }
    }

    $estudiantes = [
        new Estudiante("Ana", "PHP"),
        new Estudiante("Luis", "JavaScript")
    ];

    echo "Lista de estudiantes:<br>";
    foreach ($estudiantes as $est) {
        foreach ($est as $clave => $valor) {
            echo "$clave: $valor | ";
        }
        echo "<br>";
    }
?>

Resultado:

Lista de estudiantes:
nombre: Ana | curso: PHP |
nombre: Luis | curso: JavaScript |

Ejercicios para practicar

¡Tu turno de de codigo! Ve a curso_php8 y prueba estos retos:

  1. Lista de personas
    Crea personas_iterar.php:
<?php
       class Persona {
           public $nombre;
           public $edad;
           public $pais;

           public function __construct($nombre, $edad, $pais) {
               $this->nombre = $nombre;
               $this->edad = $edad;
               $this->pais = $pais;
           }
       }

       $personas = [
           new Persona("Ana", 25, "México"),
           new Persona("Carlos", 30, "España"),
           new Persona("Sofía", 28, "Argentina")
       ];

       echo "Lista de personas:<br>";
       foreach ($personas as $persona) {
           foreach ($persona as $clave => $valor) {
               echo "$clave: $valor | ";
           }
           echo "<br>";
       }
   ?>
  1. Filtrar libros por puntuación
    Crea libros_iterar.php:
<?php
       class Libro {
           public $titulo;
           public $autor;
           public $paginas;
           public $puntuacion;

           public function __construct($titulo, $autor, $paginas, $puntuacion) {
               $this->titulo = $titulo;
               $this->autor = $autor;
               $this->paginas = $paginas;
               $this->puntuacion = $puntuacion;
           }
       }

       $libros = [
           new Libro("Cien años de soledad", "García Márquez", 417, 5),
           new Libro("El túnel", "Ernesto Sabato", 140, 4),
           new Libro("Ficciones", "Jorge Borges", 174, 3)
       ];

       echo "Libros con 4 o más estrellas:<br>";
       foreach ($libros as $libro) {
           if ($libro->puntuacion >= 4) {
               foreach ($libro as $clave => $valor) {
                   echo "$clave: $valor | ";
               }
               echo "<br>";
           }
       }
   ?>

Ejecuta en localhost/curso_php8/ y juega con los valores.

Consejos para no enredarte

  • Encapsulación importa: Desde fuera, solo ves public. Usa métodos internos para ver más.
  • Usa claves: Con $clave => $valor, sabes qué propiedad estás mirando.
  • Prueba dentro y fuera: Compara cómo cambia la iteración según el contexto.

¡A por más POO!

¡Gran trabajo, máquina! Ahora iterar objetos es tu superpoder para explorar propiedades como detective. En la próxima lección, veremos polimorfismo para dar flexibilidad a tus clases. Si algo no te queda claro, déjame un comentario.

Lo que aprendiste hoy:

  • Qué es iterar: Recorrer las propiedades de un objeto con foreach.
  • Fuera vs dentro: Solo public desde fuera; todo desde dentro.
  • Ejemplos vivos: Iteraste laptops y personas como pro.
  • Practicaste: Listaste personas y filtraste libros como crack.
  • Tip del pro: Usa métodos internos para ver propiedades privadas si las necesitas.

Deja un comentario

Scroll al inicio