klebk / json-to-popo
用JSON内容填充普通的PHP对象。abgeo/json-to-popo的分支。
v1.0.1
2022-09-30 11:06 UTC
Requires
- php: ^7.2|^8.0
- ext-json: *
Requires (Dev)
- phpunit/phpunit: ^8.5 || ^8.0
This package is not auto-updated.
Last update: 2024-09-28 21:11:12 UTC
README
用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 \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属性必须具有完整的 qualified @var
注解以及正确的数据类型。
现在您想将此JSON转换为具有关系的POPO。此包提供了这种能力。
让我们创建一个新的 ABGEO\POPO\Composer
对象并读取 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 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 许可下发布。