json to popo
v1.0.0
プレーンな古い 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 "
}
}
}
この JSON データを表すいくつかの POPO クラス:
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"
// }
// }
//}
完全な例はこちらをご覧ください。
詳細はCHANGELOGを参照してください。
プルリクエストは大歓迎です。大きな変更の場合は、まず問題を開いて、変更したい内容について話し合ってください。
必要に応じてテストを更新してください。
Copyright © 2020 テムリ・タカランゼ.
MITライセンスに基づいてリリースされています。