Desarrollo web

Convertir una matriz en un objeto mediante PHP (patrón de hidratación)

En este post, convertiremos un matriz en objeto utilizando el patrón de hidratación de PHP. Este método es muy simple, se trata de transferir datos de un lugar a otro.

Definiremos una clase que tomará un matriz y un objeto como entradas y, luego, buscará todos los métodos set() en el objeto, llenándolo con valores del matriz.


Primero, determinaremos la clase de objeto usando la función get_class() y luego usaremos get_class_methods() para obtener los métodos de clase.

Ten en cuenta que usamos el operador de PHP 7 coalescing (??); en caso de que no estés utilizando PHP 7, puedes utilizar el operador ternario en su lugar.

Usamos substr para concatenar por si tenemos variables de tipo lowerCamelCase (inicia en minúsculas y cada palabra inicia en mayúscula) por ejemplo, $firstName.

Para probar esta clase de convertidor, necesitamos crear una clase con propiedades y métodos (getters y setters) y ver cómo convertir un array a objeto poniendo al PHP en acción.

Supongamos que tenemos una clase Employee como esta:



Convertir un array en objeto

Ahora vamos a crear un array que contendrá los datos que se transferirán a la clase.

Genial, convirtamos los datos del array en una clase.

Mira el resultado:

convert an array to object using php

¡Magnífico!

Puedes convertir un array en objeto usando el patrón de hidratación de PHP.


Convertir u objeto en un array asociativo

¿Qué hay de convertir el objeto en un array asociativo? Es el mismo concepto, vamos a crear una nueva función que haga lo contrario.

Nuestra función buscará las funciones all_get() de la misma manera que la función anterior:

Agregamos esta función a nuestra clase convert y llamémosla pasándole un objeto:

var_dump(Converter::toArray($obj));

Ten en cuenta que el $obj pasado, es el objeto generado desde el proceso de conversión del array al objeto.

convert object to array using php

El resultado muestra el array asociativo como se esperaba.

Espero que encuentres útil la publicación.

Sigue regresando. Gracias.

Mokhtar Ebrahim
Estoy trabajando como administrador de sistemas Linux desde 2010. Soy responsable de mantener, proteger y solucionar problemas de servidores Linux para múltiples clientes de todo el mundo. Me encanta escribir guiones de shell y Python para automatizar mi trabajo.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *