DocumentosImágenesMediaHerramientas PDF

Convertir JSON a Clase PHP

Genera clases PHP tipadas desde JSON, en tu navegador.

Procesado en tu navegador

JSON a Clase PHP tipada

PHP 8.x moderno

Genera código con constructor promotion, readonly properties y typed properties siguiendo las mejores prácticas de PHP moderno.

100% privado

Tu JSON (que puede contener datos sensibles) se procesa solo en tu navegador. Nunca se envía a ningún servidor.

Tipado correcto

Detecta string, int, float, bool y null automáticamente. Los campos opcionales se marcan como nullable (?tipo).

Instantáneo

Clases PHP listas en milisegundos. Sin registro, sin esperas, sin límites.

Tres pasos, sin complicaciones

1

Pega tu JSON

Pega cualquier objeto JSON, simple o anidado. La herramienta analiza la estructura y los tipos de datos automáticamente.

2

Clase PHP generada

Obtienes una clase PHP con propiedades tipadas (PHP 7.4+), constructor con promotion (PHP 8.0+) y métodos getter opcionales.

3

Copia y usa

Copia el código con un clic y pégalo en tu proyecto. Funciona con frameworks como Laravel, Symfony o PHP puro.

¿Tienes dudas?

PHP 7.4 (lanzado en noviembre de 2019) introdujo las propiedades tipadas, permitiendo declarar el tipo de cada propiedad directamente en la clase: public int $id; public string $name; public ?float $price;. Esto es una mejora fundamental sobre versiones anteriores donde los tipos solo podían documentarse en PHPDoc. Las propiedades tipadas mejoran la detección de errores en tiempo de ejecución, la legibilidad del código y permiten a los IDEs ofrecer mejor autocompletado. El tipo nullable (con ?) indica que la propiedad puede ser null, útil para campos opcionales del JSON.

El constructor promotion (promoción de propiedades en el constructor), introducido en PHP 8.0 (2020), permite definir y asignar propiedades directamente en los parámetros del constructor, eliminando la redundancia. En lugar de declarar la propiedad, declararla en el constructor y asignarla en el cuerpo, puedes escribir: public function __construct(public readonly string $name, public int $age) {}. Esto reduce drásticamente el código boilerplate y es el patrón preferido en PHP moderno, especialmente en Value Objects y DTOs.

Se generan métodos getter estándar siguiendo la convención de PHP: getName(), getId(), getPrice(). Los getters encapsulan el acceso a las propiedades privadas o protegidas, permitiendo agregar lógica de transformación en el futuro sin cambiar la interfaz pública de la clase. Si usas constructor promotion con propiedades públicas o readonly, los getters son opcionales. Para propiedades privadas, los getters son la única forma de acceder al valor desde fuera de la clase.

Los modelos Eloquent extienden Illuminate\Database\Eloquent\Model y están diseñados para representar registros de base de datos con ORM integrado. Las clases PHP planas (POPOs, Plain Old PHP Objects) son mejores para DTOs (Data Transfer Objects), respuestas de API, o cuando no hay persistencia involucrada. Si consumes una API externa y quieres modelar la respuesta JSON, una clase PHP plana generada con esta herramienta es la opción correcta. Laravel API Resources (introducidos en Laravel 5.5) también usan clases planas para transformar modelos Eloquent en JSON.

Para cada objeto anidado en el JSON se genera una clase PHP separada. Por ejemplo, si el JSON tiene {"user": {"address": {"city": "Madrid"}}}, se generan tres clases: la clase raíz con propiedad $user de tipo User, la clase User con propiedad $address de tipo Address, y la clase Address con propiedad $city de tipo string. Esto sigue el principio de responsabilidad única y permite mapear correctamente estructuras complejas de API. Los arrays de objetos se tipan como array con el tipo del elemento en PHPDoc.

La evolución de PHP 8.x, Laravel API resources y el serializador de Symfony

PHP ha evolucionado drásticamente desde PHP 7.0 (2015) hasta PHP 8.3 (2023). PHP 7.4 introdujo propiedades tipadas y el operador nullsafe. PHP 8.0 trajo union types, named arguments, match expressions y constructor promotion. PHP 8.1 añadió readonly properties, enums nativos, fibers e intersection types. PHP 8.2 incorporó readonly classes y disjunctive normal form types. PHP 8.3 completó readonly con readonly properties en clases anónimas. Esta evolución transforma PHP en un lenguaje con tipado estático opcional comparable a TypeScript o Kotlin.

En el ecosistema de Laravel (el framework PHP más popular con más de 75 millones de descargas), los API Resources (introducidos en Laravel 5.5, 2017) son la forma estándar de transformar modelos Eloquent en respuestas JSON. Extienden Illuminate\Http\Resources\Json\JsonResource y permiten controlar exactamente qué campos exponer. Para el lado contrario (consumir APIs externas), los DTOs implementados como clases PHP planas son el patrón recomendado. Paquetes como spatie/laravel-data (2021) combinan ambos conceptos: una clase que puede actuar como DTO y como API Resource simultáneamente.

El componente Serializer de Symfony (usado también por API Platform, el framework PHP para APIs REST/GraphQL más avanzado) puede serializar y deserializar objetos PHP a/desde JSON, XML, YAML y CSV. Usa anotaciones, atributos PHP 8 o configuración YAML para mapear propiedades. JMS Serializer es otra alternativa popular. En proyectos que consumen APIs, el patrón de generar clases PHP desde JSON y luego usar el Serializer de Symfony para hidratarlas (deserialización) es un flujo de trabajo profesional que separa claramente la capa de transporte (JSON) de la capa de dominio (objetos PHP).