json to popo
v1.0.0
使用 JSON 內容填滿普通舊 PHP 物件。
您可以使用 Composer 安裝此程式庫:
composer require abgeo/json-to-popo
在主檔案中包含 Composer 自動載入器(例如: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 ' );
施展魔法的時間到了!使用 JSON 和主類別的內容呼叫composeObject()
,這將為您提供 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 Temuri Takalandze。
根據麻省理工學院許可發布。