Füllen Sie ein einfaches altes PHP-Objekt mit JSON-Inhalt.
Sie können diese Bibliothek mit Composer installieren:
composer require abgeo/json-to-popo
Fügen Sie den Composer-Autoloader in Ihre Hauptdatei ein (Bsp.: index.php)
require __DIR__.'/../vendor/autoload.php';
Bedenken Sie, dass Sie example.json
mit folgendem Inhalt haben:
{
"firstName" : " Temuri " ,
"lastName" : " Takalandze " ,
"active" : true ,
"position" : {
"title" : " Developer " ,
"department" : {
"title" : " IT "
}
}
}
und mehrere POPO-Klassen zur Darstellung dieser JSON-Daten:
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...
}
Hinweis : Alle POPO-Eigenschaften müssen über eine vollständig qualifizierte @var
-Annotation mit dem richtigen Datentyp verfügen.
Jetzt möchten Sie diesen json to popo konvertieren. Dieses Paket gibt Ihnen diese Fähigkeit.
Lassen Sie uns ein neues ABGEOPOPOComposer
Objekt erstellen und den Inhalt example.json
lesen:
$ composer = new Composer ();
$ jsonContent = file_get_contents ( __DIR__ . ' /example.json ' );
Zeit für Magie! Rufen Sie composeObject()
mit dem Inhalt von JSON und der Hauptklasse auf, und Sie erhalten POPO:
$ resultObject = $ composer -> composeObject ( $ jsonContent , Person::class);
$resultObject
drucken:
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"
// }
// }
//}
Das vollständige Beispiel finden Sie hier.
Weitere Informationen finden Sie im CHANGELOG.
Pull-Anfragen sind willkommen. Bei größeren Änderungen öffnen Sie bitte zunächst ein Problem, um zu besprechen, was Sie ändern möchten.
Bitte stellen Sie sicher, dass Sie die Tests entsprechend aktualisieren.
Copyright © 2020 Temuri Takalandze.
Veröffentlicht unter der MIT-Lizenz.