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
--help
for 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,
)),
),
))