املأ كائن 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"
// }
// }
//}
انظر المثال الكامل هنا.
الرجاء مراجعة سجل التغيير للحصول على التفاصيل.
طلبات السحب هي موضع ترحيب. لإجراء تغييرات كبيرة، يرجى فتح مشكلة أولاً لمناقشة ما تريد تغييره.
يرجى التأكد من تحديث الاختبارات بالشكل المناسب.
حقوق الطبع والنشر © 2020 تيموري تاكالاندزي.
تم إصداره بموجب ترخيص MIT.