Allows generate class files parse from json and map json to php object, including multi-level and complex objects;
You can add this library as a local, per-project dependency to your project using Composer:
composer require nixihz/php-object
If you only need this library during development, for instance to run your project's test suite, then you should add it as a development-time dependency:
composer require --dev nixihz/php-object
- Generate PHP Class files from json
- Map json to object
Once you have executed composer require nixihz/php-object
you could use vendor/bin/php-object-gen to generate class file from json
Usage:
- demo
$./vendor/bin/php-object-gen --path=/tmp --json='{"foo_bar":{"foo":1.3,"bar":[641,641]}}'
output
Class FooBar saved at: /tmp/FooBar.php
Class BaseClass saved at: /tmp/BaseClass.php
- add params --helpfor more
$./vendor/php-object-gen --helper
fromJson map json to object
class FooBarClass extends PhpObject
{
    /** @var string */
    public $foo;
    /** @var integer */
    public $bar;
}
class DemoClass extends PhpObject
{
    /** @var FooBarClass */
    public $foobar;
    /** @var FooBarClass[] */
    public $foobars;
}
$json = '{"foobar":{"foo":"hello world","bar":64100},"foobars":[{"foo":"hello","bar":641},{"foo":"world","bar":664411}]}';
$demo = (new DemoClass())->fromJson($json);
var_export($demo);outputs:
DemoClass::__set_state(array(
   'foobar' => 
      FooBarClass::__set_state(array(
         'foo' => 'hello world',
         'bar' => 64100,
      )),
   'foobars' => 
      array (
        0 => 
        FooBarClass::__set_state(array(
           'foo' => 'hello',
           'bar' => 641,
        )),
        1 => 
        FooBarClass::__set_state(array(
           'foo' => 'world',
           'bar' => 664411,
        )),
      ),
))