เติมวัตถุ PHP แบบธรรมดาด้วยเนื้อหา JSON
คุณสามารถติดตั้งไลบรารีนี้ด้วย Composer:
composer require abgeo/json-to-popo
รวมตัวโหลดอัตโนมัติของผู้แต่งไว้ในไฟล์หลักของคุณ (เช่น: index.php)
require __DIR__.'/../vendor/autoload.php';
พิจารณาว่าคุณมี example.json
ที่มีเนื้อหาดังต่อไปนี้:
{
"firstName" : " Temuri " ,
"lastName" : " Takalandze " ,
"active" : true ,
"position" : {
"title" : " Developer " ,
"department" : {
"title" : " IT "
}
}
}
และคลาส POPO หลายคลาสเพื่อแสดงข้อมูล JSON นี้:
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...
}
หมายเหตุ : คุณสมบัติ POPO ทั้งหมดต้องมีคำอธิบายประกอบ @var
แบบเต็มพร้อมประเภทข้อมูลที่ถูกต้อง
ตอนนี้คุณต้องการแปลง json to popo ด้วยความสัมพันธ์ แพ็คเกจนี้ให้ความสามารถนี้แก่คุณ
มาสร้างวัตถุ ABGEOPOPOComposer
ใหม่และอ่านเนื้อหา example.json
:
$ composer = new Composer ();
$ jsonContent = file_get_contents ( __DIR__ . ' /example.json ' );
ถึงเวลาแห่งเวทมนตร์! เรียก composeObject()
พร้อมกับเนื้อหาของ JSON และคลาสหลัก และสิ่งนี้จะให้ POPO แก่คุณ:
$ resultObject = $ composer -> composeObject ( $ jsonContent , Person::class);
พิมพ์ $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"
// }
// }
//}
ดูตัวอย่างเต็มได้ที่นี่
โปรดดู CHANGELOG สำหรับรายละเอียด
ยินดีต้อนรับคำขอดึง สำหรับการเปลี่ยนแปลงที่สำคัญ โปรดเปิดประเด็นก่อนเพื่อหารือเกี่ยวกับสิ่งที่คุณต้องการเปลี่ยนแปลง
โปรดตรวจสอบให้แน่ใจว่าได้อัปเดตการทดสอบตามความเหมาะสม
ลิขสิทธิ์ © 2020 Temuri Takalandze.
เผยแพร่ภายใต้ใบอนุญาต MIT