JSON in PHP Class
Typisierte PHP-Klassen aus JSON generieren, direkt in deinem Browser.
Wofür das Tool gut ist
JSON zu typisierter PHP-Klasse
Modernes PHP 8.x
Generiert Code mit Constructor Promotion, readonly-Eigenschaften und typisierten Eigenschaften nach den Best Practices von modernem PHP.
100 % privat
Dein JSON (das möglicherweise sensible Daten enthält) wird ausschließlich in deinem Browser verarbeitet und nie an einen Server gesendet.
Korrekte Typisierung
Erkennt string, int, float, bool und null automatisch. Optionale Felder werden als nullable (?Typ) markiert.
Sofort
PHP-Klassen in Millisekunden fertig. Ohne Registrierung, ohne Wartezeit, ohne Limits.
So funktioniert es
Drei Schritte, kein Aufwand
Dein JSON einfügen
Füge ein beliebiges JSON-Objekt ein, einfach oder verschachtelt. Das Tool analysiert Struktur und Datentypen automatisch.
PHP-Klasse wird generiert
Du erhältst eine PHP-Klasse mit typisierten Eigenschaften (PHP 7.4+), Constructor Promotion (PHP 8.0+) und optionalen Getter-Methoden.
Kopieren und verwenden
Kopiere den Code mit einem Klick und füge ihn in dein Projekt ein. Funktioniert mit Laravel, Symfony oder reinem PHP.
FAQ
Noch Fragen?
PHP 7.4 (veröffentlicht im November 2019) führte typisierte Eigenschaften ein, mit denen du den Typ jeder Eigenschaft direkt in der Klasse deklarieren kannst: public int $id; public string $name; public ?float $price;. Das ist eine grundlegende Verbesserung gegenüber älteren Versionen, in denen Typen nur per PHPDoc dokumentiert werden konnten. Typisierte Eigenschaften verbessern die Fehlererkennng zur Laufzeit, die Lesbarkeit des Codes und ermöglichen bessere Autovervollständigung in IDEs. Der nullable-Typ (mit ?) gibt an, dass die Eigenschaft null sein kann, was bei optionalen JSON-Feldern nützlich ist.
Constructor Promotion (Eigenschaftsförderung im Konstruktor), eingeführt in PHP 8.0 (2020), ermöglicht es, Eigenschaften direkt in den Konstruktorparametern zu definieren und zuzuweisen, was Redundanz eliminiert. Anstatt die Eigenschaft zu deklarieren, sie im Konstruktor aufzulisten und im Rumpf zuzuweisen, schreibst du einfach: public function __construct(public readonly string $name, public int $age) {}. Das reduziert Boilerplate-Code drastisch und ist das bevorzugte Muster in modernem PHP, insbesondere für Value Objects und DTOs.
Es werden Standard-Getter-Methoden nach PHP-Konvention generiert: getName(), getId(), getPrice(). Getter kapseln den Zugriff auf private oder geschützte Eigenschaften und erlauben es, später Transformationslogik hinzuzufügen, ohne die öffentliche Schnittstelle der Klasse zu ändern. Wenn du Constructor Promotion mit öffentlichen oder readonly-Eigenschaften verwendest, sind Getter optional. Für private Eigenschaften sind Getter die einzige Möglichkeit, von außerhalb der Klasse auf den Wert zuzugreifen.
Eloquent-Modelle erweitern Illuminate\Database\Eloquent\Model und sind für die Darstellung von Datenbankeinträgen mit integriertem ORM konzipiert. Einfache PHP-Klassen (POPOs) eignen sich besser für DTOs (Data Transfer Objects), API-Antworten oder wenn keine Persistenz im Spiel ist. Wenn du eine externe API konsumierst und die JSON-Antwort modellieren möchtest, ist eine mit diesem Tool generierte einfache PHP-Klasse die richtige Wahl. Laravel API Resources (ab Laravel 5.5) verwenden ebenfalls einfache Klassen, um Eloquent-Modelle in JSON zu transformieren.
Für jedes verschachtelte Objekt im JSON wird eine eigene PHP-Klasse generiert. Wenn das JSON beispielsweise {user: {address: {city: Berlin}}} enthält, werden drei Klassen erstellt: die Wurzelklasse mit einer $user-Eigenschaft vom Typ User, die User-Klasse mit einer $address-Eigenschaft vom Typ Address und die Address-Klasse mit einer $city-Eigenschaft vom Typ string. Das folgt dem Single-Responsibility-Prinzip und bildet komplexe API-Strukturen korrekt ab. Arrays von Objekten werden als array mit dem Elementtyp in PHPDoc typisiert.
PHP 8.x-Entwicklung, Laravel API Resources und der Symfony-Serializer
PHP hat sich von PHP 7.0 (2015) bis PHP 8.3 (2023) dramatisch weiterentwickelt. PHP 7.4 führte typisierte Eigenschaften und den nullsafe-Operator ein. PHP 8.0 brachte Union Types, Named Arguments, Match-Ausdrücke und Constructor Promotion. PHP 8.1 ergänzte readonly-Eigenschaften, native Enums, Fibers und Intersection Types. PHP 8.2 führte readonly-Klassen ein. PHP 8.3 vervollständigte readonly mit entsprechenden Eigenschaften in anonymen Klassen. Diese Entwicklung verwandelt PHP in eine Sprache mit optionaler statischer Typisierung, die TypeScript oder Kotlin vergleichbar ist.
Im Laravel-Ökosystem (das beliebteste PHP-Framework mit über 75 Millionen Downloads) sind API Resources (eingeführt in Laravel 5.5, 2017) die Standardmethode, um Eloquent-Modelle in JSON-Antworten umzuwandeln. Sie erweitern Illuminate\Http\Resources\Json\JsonResource und bieten präzise Kontrolle darüber, welche Felder nach außen gegeben werden. Für die Gegenseite (Konsum externer APIs) sind DTOs als einfache PHP-Klassen das empfohlene Muster. Pakete wie spatie/laravel-data (2021) verbinden beide Konzepte: eine Klasse kann gleichzeitig als DTO und als API Resource fungieren.
Die Serializer-Komponente von Symfony (auch von API Platform genutzt, dem fortschrittlichsten PHP-Framework für REST/GraphQL-APIs) kann PHP-Objekte nach und von JSON, XML, YAML und CSV serialisieren und deserialisieren. Sie verwendet Annotationen, PHP 8-Attribute oder YAML-Konfiguration für das Mapping von Eigenschaften. JMS Serializer ist eine weitere beliebte Alternative. In Projekten, die APIs konsumieren, ist das Muster, PHP-Klassen aus JSON zu generieren und anschließend den Symfony-Serializer zur Hydrierung (Deserialisierung) zu verwenden, ein professioneller Workflow, der die Transportschicht (JSON) sauber von der Domänenschicht (PHP-Objekte) trennt.