Перейти до вмісту

JSON у PHP клас

Перетворіть приклад JSON у типізований PHP клас з конструктором, fromArray і toArray.

Введення
Вихід

JSON у PHP клас

Вставте об'єкт JSON або масив, і цей інструмент визначить тип кожного поля, потім створить готовий до використання PHP клас: типізовані властивості, конструктор, статичний фабричний метод fromArray() і метод toArray() для перетворення об'єкту назад у звичайний масив. Вкладені об'єкти автоматично стають власними класами, і однакові структури повторно використовуються замість дублювання, тому корисне навантаження з кількома подібно структурованими розділами все ще створює компактний файл.

Ім'я класу і простір імен називають кореневий клас і опціонально обгортають його у простір імен PHP. Promoted конструктор PHP 8 записує властивості безпосередньо в сигнатуру конструктора замість їх окремого оголошення — вимкніть його для класичного явного конструктора. Створити гетери і сетери додає методи доступу (isX() для логічних значень, getX()/setX() для решти) замість прямого доступу до властивостей. declare(strict_types=1) додає заголовок суворих типів PHP, а коментарі docblock анотують кожну властивість її передбачуваним типом. Поля масиву визначають, типізується чи список як звичайний масив або задокументовано типом його елементів, наприклад string[], оскільки PHP не має узагальнень для цього в підказці типів.

Поле, яке розглядається як null або відсутнє в деяких елементах масиву об'єктів, генерується як nullable — з безпечною перевіркою isset() коли потрібно побудувати вкладений об'єкт або відобразити список, та null-coalescing за замовчуванням у протилежному випадку. Ключ, який конфліктує з зарезервованим словом PHP або починається з цифри, перейменовується на допустиме ім'я властивості, і кожна створена властивість зберігає оригінальний ключ JSON як свій ключ масиву в fromArray() і toArray().

Усе працює локально у вашому браузері — JSON який ви вставляєте, може включати реальні відповіді API або дані конфігурації, ніколи не завантажується ніде. Скопіюйте створений клас, завантажте його як файл .txt або відправте результат назад на введення для подальшого уточнення.

FAQ

На яку версію PHP розраховується створений код?
PHP 8.0 або пізніше, оскільки promoted властивості конструктора і тип mixed це особливості PHP 8. Вимкніть опцію promoted-constructor якщо вам потрібен вихід сумісний з PHP 7.
Як обробляються вкладені об'єкти?
Кожна відрізнена структура об'єкту стає своїм класом з власними методами fromArray() і toArray(). Два поля з однаковою структурою повторно використовують один і той же створений клас замість дублювання.
Що відбувається з полем, яке іноді дорівнює null або відсутнє?
Воно створюється як nullable типізована властивість. Скаляри за замовчуванням null з null-coalescing оператором; вкладені об'єкти і списки об'єктів використовують перевірку isset() щоб fromArray() ніколи не викликав метод на відсутніх даних.
Чи можу я створити кілька класів з одного прикладу JSON?
Так. Кожний вкладений об'єкт у прикладі створює свій власний клас у одному файлі, в порядку залежностей, тому файл готовий до використання як є.
Мій JSON завантажується деінде?
Ні. Створення класу працює повністю у вашому браузері — ваш JSON ніколи не залишає вашого пристрою.