DocumentiImmaginiMediaStrumenti PDF

JSON in PHP Class

Genera classi PHP tipizzate da JSON, direttamente nel tuo browser.

Processed in your browser

Da JSON a classe PHP tipizzata

PHP 8.x moderno

Genera codice con constructor promotion, proprieta readonly e proprieta tipizzate seguendo le best practice PHP moderne.

100% privato

Il tuo JSON, che potrebbe contenere dati sensibili, viene elaborato solo nel tuo browser. Non viene mai inviato a nessun server.

Tipizzazione corretta

Rileva automaticamente string, int, float, bool e null. I campi opzionali vengono marcati come nullable (?tipo).

Istantaneo

Classi PHP pronte in millisecondi. Nessuna registrazione, nessuna attesa, nessun limite.

Tre passaggi, senza complicazioni

1

Incolla il tuo JSON

Inserisci qualsiasi oggetto JSON, semplice o annidato. Lo strumento analizza la struttura e i tipi di dato in automatico.

2

Classe PHP generata

Ottieni una classe PHP con proprieta tipizzate (PHP 7.4+), constructor promotion (PHP 8.0+) e metodi getter opzionali.

3

Copia e usa

Copia il codice con un clic e incollalo nel tuo progetto. Funziona con Laravel, Symfony o PHP puro.

Hai delle domande?

PHP 7.4 (novembre 2019) ha introdotto le proprieta tipizzate, che ti permettono di dichiarare il tipo di ogni proprieta direttamente nella classe: public int $id; public string $name; public ?float $price;. Si tratta di un miglioramento fondamentale rispetto alle versioni precedenti, dove i tipi potevano essere documentati solo tramite PHPDoc. Le proprieta tipizzate migliorano il rilevamento degli errori a runtime, la leggibilita del codice e consentono agli IDE di offrire un autocompletamento piu preciso. Il tipo nullable (con ?) indica che la proprieta puo essere null, utile per i campi JSON opzionali.

Il constructor promotion, introdotto in PHP 8.0 (2020), ti permette di definire e assegnare le proprieta direttamente nei parametri del costruttore, eliminando la ridondanza. Invece di dichiarare la proprieta, elencarla nel costruttore e assegnarla nel corpo, puoi scrivere: public function __construct(public readonly string $name, public int $age) {}. Questo riduce drasticamente il codice boilerplate ed e il pattern preferito nel PHP moderno, specialmente per Value Object e DTO.

Vengono generati metodi getter standard seguendo la convenzione PHP: getName(), getId(), getPrice(). I getter incapsulano l'accesso alle proprieta private o protette, consentendo di aggiungere logica di trasformazione in futuro senza modificare l'interfaccia pubblica della classe. Se usi il constructor promotion con proprieta public o readonly, i getter sono opzionali. Per le proprieta private, i getter sono l'unico modo per accedere al valore dall'esterno della classe.

I modelli Eloquent estendono Illuminate\Database\Eloquent\Model e sono progettati per rappresentare record del database con ORM integrato. Le classi PHP semplici (POPO, Plain Old PHP Objects) sono piu adatte per DTO (Data Transfer Object), risposte API o quando non c'e persistenza. Se consumi un'API esterna e vuoi modellare la risposta JSON, una classe PHP semplice generata con questo strumento e la scelta giusta. Le API Resource di Laravel (introdotte in Laravel 5.5) usano anch'esse classi semplici per trasformare i modelli Eloquent in JSON.

Per ogni oggetto annidato nel JSON viene generata una classe PHP separata. Ad esempio, se il JSON contiene {user: {address: {city: Madrid}}}, vengono generate tre classi: la classe radice con la proprieta $user di tipo User, la classe User con la proprieta $address di tipo Address, e la classe Address con la proprieta $city di tipo string. Questo rispetta il principio di singola responsabilita e mappa correttamente le strutture API complesse. Gli array di oggetti sono tipizzati come array con il tipo dell'elemento in PHPDoc.

Evoluzione di PHP 8.x, API resource di Laravel e il Serializer di Symfony

PHP si e evoluto enormemente da PHP 7.0 (2015) a PHP 8.3 (2023). PHP 7.4 ha introdotto le proprieta tipizzate e l'operatore nullsafe. PHP 8.0 ha portato union types, named arguments, espressioni match e constructor promotion. PHP 8.1 ha aggiunto le proprieta readonly, gli enum nativi, le fiber e i tipi di intersezione. PHP 8.2 ha introdotto le classi readonly e i tipi in forma normale disgiuntiva. PHP 8.3 ha completato il supporto readonly nelle classi anonime. Questa evoluzione trasforma PHP in un linguaggio con tipizzazione statica opzionale paragonabile a TypeScript o Kotlin.

Nell'ecosistema Laravel (il framework PHP piu popolare con oltre 75 milioni di download), le API Resource (introdotte in Laravel 5.5, 2017) sono il metodo standard per trasformare i modelli Eloquent in risposte JSON. Estendono Illuminate\Http\Resources\Json\JsonResource e permettono un controllo preciso sui campi da esporre. Per il lato opposto, ossia il consumo di API esterne, i DTO implementati come classi PHP semplici sono il pattern consigliato. Pacchetti come spatie/laravel-data (2021) combinano entrambi i concetti: una classe che puo agire sia come DTO che come API Resource contemporaneamente.

Il componente Serializer di Symfony, usato anche da API Platform (il framework PHP piu avanzato per API REST e GraphQL), puo serializzare e deserializzare oggetti PHP in e da JSON, XML, YAML e CSV. Utilizza annotazioni, attributi PHP 8 o configurazione YAML per mappare le proprieta. JMS Serializer e un'altra alternativa diffusa. Nei progetti che consumano API, il pattern di generare classi PHP da JSON e poi usare il Serializer di Symfony per idratarle (deserializzazione) e un workflow professionale che separa nettamente il livello di trasporto (JSON) dal livello di dominio (oggetti PHP).