Isi Objek PHP Lama Biasa dengan konten JSON.
Anda dapat menginstal perpustakaan ini dengan Komposer:
composer require abgeo/json-to-popo
Sertakan composer autoloader di file utama Anda (Contoh: index.php)
require __DIR__.'/../vendor/autoload.php';
Anggaplah Anda memiliki example.json
dengan konten berikut:
{
"firstName" : " Temuri " ,
"lastName" : " Takalandze " ,
"active" : true ,
"position" : {
"title" : " Developer " ,
"department" : {
"title" : " IT "
}
}
}
dan beberapa kelas POPO untuk mewakili data JSON ini:
Department.php
<?php
class Department
{
/**
* @var string
*/
private $ title ;
// Getters and Setters here...
}
Position.php
<?php
class Position
{
/**
* @var string
*/
private $ title ;
/**
* @var ABGEOPOPOExampleDepartment
*/
private $ department ;
// Getters and Setters here...
}
Person.php
<?php
class Person
{
/**
* @var string
*/
private $ firstName ;
/**
* @var string
*/
private $ lastName ;
/**
* @var bool
*/
private $ active ;
/**
* @var ABGEOPOPOExamplePosition
*/
private $ position ;
// Getters and Setters here...
}
Catatan : Semua properti POPO harus memiliki anotasi @var
yang memenuhi syarat dan tipe data yang benar.
Sekarang Anda ingin mengonversi json to popo dengan relasi. Paket ini memberi Anda kemampuan ini.
Mari buat objek ABGEOPOPOComposer
baru dan baca konten example.json
:
$ composer = new Composer ();
$ jsonContent = file_get_contents ( __DIR__ . ' /example.json ' );
Waktunya untuk sihir! Panggil composeObject()
dengan konten JSON dan kelas utama, dan ini akan memberi Anda POPO:
$ resultObject = $ composer -> composeObject ( $ jsonContent , Person::class);
Cetak $resultObject
:
var_dump ( $ resultObject );
//class ABGEOPOPOExamplePerson#2 (4) {
// private $firstName =>
// string(6) "Temuri"
// private $lastName =>
// string(10) "Takalandze"
// private $active =>
// bool(true)
// private $position =>
// class ABGEOPOPOExamplePosition#4 (2) {
// private $title =>
// string(9) "Developer"
// private $department =>
// class ABGEOPOPOExampleDepartment#7 (1) {
// private $title =>
// string(2) "IT"
// }
// }
//}
Lihat contoh selengkapnya di sini.
Silakan lihat CHANGELOG untuk detailnya.
Permintaan tarik dipersilakan. Untuk perubahan besar, silakan buka terbitan terlebih dahulu untuk mendiskusikan apa yang ingin Anda ubah.
Harap pastikan untuk memperbarui pengujian sebagaimana mestinya.
Hak Cipta © 2020 Temuri Takalandze.
Dirilis di bawah lisensi MIT.