Hola. ¿Cómo están? Bienvenidos nuevamente continuando con los tutoriales de PHP 8 nivel básico, Hoy veremos lo que son la iteración de objetos en PHP 8.
¡Empecemos!
¿Qué es la iteración de objetos en PHP?
La iteración de objetos se refiere a la capacidad de recorrer los elementos de un objeto de forma secuencial para acceder a sus atributos y/o realizar ciertas operaciones en cada uno de ellos. El objeto se puede iterar a través de declarar una función que contendrá un bucle foreach para recorrer todos los atributos del objeto.
La sintaxis básica del bucle foreach para iterar sobre un objeto es la siguiente:
$objeto = new Objeto(); foreach ($objeto as $elemento) { // Operaciones con $elemento }
Ejemplo de iteración de objetos en PHP
Ahora haremos algunos ejemplos. En primer lugar, vamos a crear el archivo iteracion_objetos.php en la ruta de nuestro proyecto. Para ir probando los ejemplos abrimos nuestro navegador, en la ruta localhost:8080/curso_php8/iteracion_objetos.php.
Crear la clase Laptop
Seguidamente, vamos a crear una clase “Laptop”, con atributos como marca, modelo, color y serie.
class Laptop { public $marca; public $modelo; public $color; private $serie; }
Ahora vamos a crear el constructor de la clase para iniciar los atributos.
function __construct($marca, $modelo, $color, $serie){ $this->marca = $marca; $this->modelo = $modelo; $this->color = $color; $this->serie = $serie; }
Por último, vamos a crear un método iterarLaptop que contendrá una sentencia foreach donde iterar el objeto como una lista de elementos.
public function iterarLaptop(){ echo "Iterar valores de la clase Laptop dentro de la clase <br>"; foreach ($this as $clave => $valor){ print "$clave => $valor <br>"; } }
Ahora, es momento de crear un objeto $laptop que se instancie de la clase Laptop con los valores que le pasamos al constructor.
$laptop = new Laptop('Apple', 'MacBook Pro', 'Blanco', '2131234212');
Primeramente vamos a crear una iteración del objeto fuera de la clase Laptop con la sentencia foreach.
echo "Iterar valores de la clase Laptop fuera de la clase <br>"; foreach ($laptop as $clave => $valor){ print "$clave => $valor<br>"; }
Si observamos, al iterar el objeto fuera de la clase solo imprime los atributos a los que tiene acceso en este caso solo a los que son de tipo “public” . Esto por que PHP nos permite encapsular los objetos, Esta característica la veremos en próximas clases.
Por último, con el mismo objeto esta vez vamos a iterar el objeto ahora dentro de la clase “Laptop” llamando al método iterarLaptop.
$laptop->iterarLaptop();
Ahora si observamos en el navegador imprime todos sus atributos de la clase, esto porque es accesible desde el método de la clase.
Vemos otro ejemplo, vamos a definir una clase “Persona” con dos atributos nombre y edad, y luego vamos a crear un objeto $persona1 de esa clase. Al utilizar el bucle foreach, podemos iterar sobre los atributos del objeto Persona y mostrar su clave (nombre del atributo) y valor (valor del atributo) en cada iteración.
class Persona { public $nombre; public $edad; public function __construct($nombre, $edad) { $this->nombre = $nombre; $this->edad = $edad; } } $persona1 = new Persona("Juan", 30); foreach ($persona1 as $clave => $valor) { echo "$clave: $valor\n"; }
Ejercicios de la clase
1.- Iterar una lista de personas con atributos como nombre, edad, país. Mostrar los resultados en pantalla.
2.- Crear una clase Libro con atributos como título, autor, número de páginas, puntuación. Mostrar todos los libros que tengan una puntuación mayor o igual a 4 estrellas.
Recuerda que puedes descargarte el código fuente de esta clase más los ejemplos desarrollados en el repositorio de GitHub totalmente gratis.
Hasta aquí la clase de hoy la iteración de objetos en PHP 8, si tiene alguna consulta puedes dejarnos un comentario o si quieres saber más acerca de este tema puedes visitar el sitio oficial de PHP. En el próximo tutorial veremos lo que es polimorfismo en PHP 8.
Saludos y éxitos.

Victor Peña
Desarrollador de software Backend Developer, experto en Laravel Framework, PHP, JavaScript y MySQL. Creador de contenidos de emprendimiento y desarrollo de software.