DokumentyObrazyMediaNarzędzia PDF

JSON na PHP Class

Generuj typowane klasy PHP z JSON bezpośrednio w przeglądarce.

Processed in your browser

JSON na typowaną klasę PHP

Nowoczesne PHP 8.x

Generuje kod z constructor promotion, właściwościami readonly i typowanymi właściwościami zgodnie z najlepszymi praktykami nowoczesnego PHP.

100% prywatne

Twój JSON (który może zawierać dane wrażliwe) jest przetwarzany wyłącznie w Twojej przeglądarce. Nigdy nie jest wysyłany na żaden serwer.

Poprawne typowanie

Automatycznie wykrywa string, int, float, bool i null. Opcjonalne pola są oznaczane jako nullable (?typ).

Natychmiast

Klasy PHP gotowe w milisekundach. Bez rejestracji, bez czekania, bez limitów.

Trzy kroki, żadnych komplikacji

1

Wklej swój JSON

Wklej dowolny obiekt JSON, prosty lub zagnieżdżony. Narzędzie automatycznie analizuje strukturę i typy danych.

2

Wygenerowana klasa PHP

Otrzymujesz klasę PHP z typowanymi właściwościami (PHP 7.4+), constructor promotion (PHP 8.0+) i opcjonalnymi metodami getter.

3

Skopiuj i użyj

Skopiuj kod jednym kliknięciem i wklej do swojego projektu. Działa z Laravel, Symfony lub czystym PHP.

Masz pytania?

PHP 7.4 (wydany w listopadzie 2019) wprowadził typowane właściwości, umożliwiając deklarowanie typu każdej właściwości bezpośrednio w klasie: public int $id; public string $name; public ?float $price;. To fundamentalna poprawa względem wcześniejszych wersji, gdzie typy można było tylko dokumentować w PHPDoc. Typowane właściwości poprawiają wykrywanie błędów w czasie wykonania, czytelność kodu i pozwalają IDE oferować lepsze autouzupełnianie. Typ nullable (z ?) oznacza, że właściwość może mieć wartość null — przydatne dla opcjonalnych pól JSON.

Constructor promotion (promocja właściwości w konstruktorze), wprowadzony w PHP 8.0 (2020), pozwala definiować i przypisywać właściwości bezpośrednio w parametrach konstruktora, eliminując powtarzalny kod. Zamiast deklarować właściwość, wymieniać ją w konstruktorze i przypisywać w ciele, możesz napisać: public function __construct(public readonly string $name, public int $age) {}. Drastycznie redukuje to boilerplate i jest preferowanym wzorcem w nowoczesnym PHP, szczególnie dla Value Objects i DTO.

Generowane są standardowe metody getter zgodne z konwencją PHP: getName(), getId(), getPrice(). Gettery hermetyzują dostęp do właściwości prywatnych lub chronionych, umożliwiając dodanie logiki transformacji w przyszłości bez zmiany publicznego interfejsu klasy. Jeśli używasz constructor promotion z właściwościami publicznymi lub readonly, gettery są opcjonalne. Dla właściwości prywatnych getter jest jedynym sposobem na dostęp do wartości spoza klasy.

Modele Eloquent rozszerzają Illuminate\Database\Eloquent\Model i są przeznaczone do reprezentowania rekordów bazy danych ze zintegrowanym ORM. Zwykłe klasy PHP (POPO, Plain Old PHP Objects) są lepsze dla DTO (Data Transfer Objects), odpowiedzi API lub gdy nie ma zaangażowanej persystencji. Jeśli konsumujesz zewnętrzne API i chcesz modelować odpowiedź JSON, zwykła klasa PHP wygenerowana tym narzędziem jest właściwym wyborem. Laravel API Resources (wprowadzone w Laravel 5.5) również używają zwykłych klas do transformacji modeli Eloquent do JSON.

Dla każdego zagnieżdżonego obiektu w JSON generowana jest osobna klasa PHP. Na przykład, jeśli JSON zawiera {"user": {"address": {"city": "Warszawa"}}}, generowane są trzy klasy: klasa główna z właściwością $user typu User, klasa User z właściwością $address typu Address oraz klasa Address z właściwością $city typu string. Podąża to za zasadą pojedynczej odpowiedzialności i poprawnie mapuje złożone struktury API. Tablice obiektów są typowane jako array z typem elementu w PHPDoc.

Ewolucja PHP 8.x, Laravel API Resources i serializator Symfony

PHP ewoluował dramatycznie od PHP 7.0 (2015) do PHP 8.3 (2023). PHP 7.4 wprowadził typowane właściwości i operator nullsafe. PHP 8.0 przyniósł union types, named arguments, wyrażenia match i constructor promotion. PHP 8.1 dodał właściwości readonly, natywne enumy, fibry i typy intersection. PHP 8.2 wprowadził klasy readonly i typy disjunctive normal form. PHP 8.3 dopełnił readonly o właściwości readonly w klasach anonimowych. Ta ewolucja przekształca PHP w język z opcjonalnym typowaniem statycznym porównywalnym do TypeScript lub Kotlin.

W ekosystemie Laravel (najpopularniejszy framework PHP z ponad 75 milionami pobrań) API Resources (wprowadzone w Laravel 5.5, 2017) to standardowy sposób transformacji modeli Eloquent na odpowiedzi JSON. Rozszerzają Illuminate\Http\Resources\Json\JsonResource i zapewniają precyzyjną kontrolę nad tym, które pola eksponować. Po drugiej stronie (konsumowanie zewnętrznych API) DTO implementowane jako zwykłe klasy PHP są zalecanym wzorcem. Pakiety takie jak spatie/laravel-data (2021) łączą oba koncepty: klasa może jednocześnie pełnić rolę DTO i API Resource.

Komponent Serializer Symfony (używany też przez API Platform, najbardziej zaawansowany framework PHP dla API REST/GraphQL) potrafi serializować i deserializować obiekty PHP do/z JSON, XML, YAML i CSV. Używa adnotacji, atrybutów PHP 8 lub konfiguracji YAML do mapowania właściwości. JMS Serializer to kolejna popularna alternatywa. W projektach konsumujących API wzorzec generowania klas PHP z JSON, a następnie używania Serializer Symfony do ich hydratacji (deserializacja), to profesjonalny przepływ pracy, który czytelnie oddziela warstwę transportową (JSON) od warstwy domenowej (obiekty PHP).