PHP Classes

File: README.md

Recommend this page to a friend!
  Classes of Niko   PHP JSON to Object Mapper   README.md   Download  
File: README.md
Role: Documentation
Content type: text/markdown
Description: Read me
Class: PHP JSON to Object Mapper
Map JSON decoded data into entity objects
Author: By
Last change:
Date: 5 years ago
Size: 2,339 bytes
 

Contents

Class file image Download

JSON to Entity

pipeline status coverage report

Map json into entity. This allows you to easily validate payload json and map it automatically into entity class. This class can be for example ORM class, when you can directly save it into the DB.

This is pretty nice, if you're lazy and need just to develop fast, but if you need high performance application, please map json and validate json manually. Comes with performance strike, but saves time.

Install

Via composer:

composer require niko9911/json-to-entity

Usage

<?php
declare(strict_types=1);

// Declare entity where to map.
final class Basic
{
    /
     * @var string
     */
    private $bar;
    /
     * @var int|null
     */
    private $foo;
    /
     * @var array
     */
    private $fooBar;

    /
     * BasicUnitTestEntity constructor.
     *
     * @param string $bar
     * @param int    $foo
     * @param array  $fooBar
     */
    public function __construct(string $bar, ?int $foo, array $fooBar)
    {
        $this->bar = $bar;
        $this->foo = $foo;
        $this->fooBar = $fooBar;
    }

    /
     * @return string
     */
    public function getBar(): string
    {
        return $this->bar;
    }

    /
     * @return int|null
     */
    public function getFoo(): ?int
    {
        return $this->foo;
    }

    /
     * @return array
     */
    public function getFooBar(): array
    {
        return $this->fooBar;
    }
}

// JSON
$json = <<<JSON
{
  "bar": "Some_Bar",
  "foo": 10,
  "fooBar": ["a", "b", "c"]
}
JSON;

$mapper = new \Niko9911\JsonToEntity\Mapper();
$entity = $mapper->map(\json_decode($json), Basic::class);
var_dump($entity);
//class Basic#25 (3) {
//  private $bar =>
//  string(8) "Some_Bar"
//  private $foo =>
//  int(10)
//  private $fooBar =>
//  array(3) {
//    [0] =>
//    string(1) "a"
//    [1] =>
//    string(1) "b"
//    [2] =>
//    string(1) "c"
//  }
//}


License

Licensed under the MIT license.