inquid / json-to-popo
用JSON内容填充普通PHP对象。abgeo/json-to-popo的分支。
1.x-dev
2022-11-13 07:45 UTC
Requires
- php: ^7.2 || ^8.0
- ext-json: *
Requires (Dev)
- phpunit/phpunit: ^8.5 || ^8.0
This package is auto-updated.
Last update: 2024-09-13 11:37:24 UTC
README
用JSON内容填充普通PHP对象。
安装
您可以使用Composer安装此库(https://getcomposer.org.cn/)
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 \ABGEO\POPO\Example\Department */ private $department; // Getters and Setters here... }
Person.php
<?php class Person { /** * @var string */ private $firstName; /** * @var string */ private $lastName; /** * @var bool */ private $active; /** * @var \ABGEO\POPO\Example\Position */ private $position; // Getters and Setters here... }
注意:所有POPO属性都必须有完整的@var
注释,并带有正确的数据类型。
现在您想将此JSON转换为具有关系的POPO。此包为您提供了这种能力。
让我们创建一个新的ABGEO\POPO\Composer
对象并读取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 ABGEO\POPO\Example\Person#2 (4) { // private $firstName => // string(6) "Temuri" // private $lastName => // string(10) "Takalandze" // private $active => // bool(true) // private $position => // class ABGEO\POPO\Example\Position#4 (2) { // private $title => // string(9) "Developer" // private $department => // class ABGEO\POPO\Example\Department#7 (1) { // private $title => // string(2) "IT" // } // } //}
查看完整示例此处。
变更日志
请参阅CHANGELOG以获取详细信息。
贡献
欢迎拉取请求。对于重大更改,请先提出问题以讨论您想更改的内容。
请确保根据需要更新测试。
作者
- Temuri Takalandze - 初始工作
许可
版权所有 © 2020 Temuri Takalandze。
在MIT许可下发布。