Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/abgeo/json-to-popo

Fill Plain Old PHP Object with JSON content.
https://github.com/abgeo/json-to-popo

composer data-types json json-parser php php-library plain-old-php-object popo

Last synced: about 6 hours ago
JSON representation

Fill Plain Old PHP Object with JSON content.

Awesome Lists containing this project

README

        

# json-to-popo

Fill Plain Old PHP Object with JSON content.

[![Build Status](https://travis-ci.com/ABGEO/json-to-popo.svg?branch=1.x)](https://travis-ci.com/ABGEO/json-to-popo?branch=1.x)
[![Coverage Status](https://coveralls.io/repos/github/ABGEO/json-to-popo/badge.svg?branch=1.x)](https://coveralls.io/github/ABGEO/json-to-popo?branch=1.x)
[![GitHub release](https://img.shields.io/github/release/ABGEO/json-to-popo.svg)](https://github.com/ABGEO/json-to-popo/releases)
[![Packagist Version](https://img.shields.io/packagist/v/abgeo/json-to-popo.svg)](https://packagist.org/packages/abgeo/json-to-popo)
[![GitHub license](https://img.shields.io/github/license/ABGEO/json-to-popo.svg)](https://github.com/ABGEO/json-to-popo/blob/master/LICENSE)

## Installation

You can install this library with [Composer](https://getcomposer.org/):

- `composer require abgeo/json-to-popo`

## Usage

Include composer autoloader in your main file (Ex.: index.php)

- `require __DIR__.'/../vendor/autoload.php';`

Consider that you have `example.json` with the following content:

```json
{
"firstName": "Temuri",
"lastName": "Takalandze",
"active": true,
"position": {
"title": "Developer",
"department": {
"title": "IT"
}
}
}
```

and several POPO classes to represent this JSON data:

`Department.php`

```php
composeObject($jsonContent, Person::class);
```

Print `$resultObject`:

```php
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"
// }
// }
//}
```

**See full example [here](examples).**

## Changelog

Please see [CHANGELOG](CHANGELOG.md) for details.

## Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Please make sure to update tests as appropriate.

## Authors

- [**Temuri Takalandze**](https://abgeo.dev) - *Initial work*

## License

Copyright © 2020 [Temuri Takalandze](https://abgeo.dev).
Released under the [MIT](LICENSE) license.