codemagpie / array2object
A high performance, Supports converting array into object and object into array, easy to use
1.0.1
2022-05-27 06:41 UTC
Requires
- php: >=7.4
- codemagpie/utils: ^1.0
- hyperf/utils: ^2.2
- symfony/property-info: ^5.4
Requires (Dev)
- ext-json: *
- friendsofphp/php-cs-fixer: ^3.1
- phpunit/phpunit: ^9.5
README
Introduction
Supports converting array into object and object into array, easy to use
Installation
composer require codemagpie/array2object
Usage1
Only need to declare the class property type:
use CodeMagpie\ArrayToObject\AbstractBaseObject class User extends AbstractBaseObject { public string $name; public int $age; public User $child; /** * @var User[] */ public array $children; }
To use:
$arr = [ 'name' => 'test', 'age' => '17', 'child' => [ 'name' => 'test1', 'age' => '17', ], 'children' => [ [ 'name' => 'test2', 'age' => '17', ], ], ]; $user = new User($arr); // if the user object does not extend AbstractBaseObject, you should use: // $user = new User(); // \CodeMagpie\ArrayToObject\ArrayToObjectBuilder::create()->bind($user); // echo \CodeMagpie\ArrayToObject\Utils\DataHelper::objectToArray($user); // Array echo $user->name; // test echo $user->age; // 17 echo $user->child->name; // test1 echo $user->children[0]->name; // test2 echo $user->toArray() //Array. if extend ArrayToObjectBuilder
Usage2
Only need declare the property type on the class's annotation:
use CodeMagpie\ArrayToObject\AbstractLightBaseObject /** * @property string $name * @property int $age * @property User $child * @property User[] $children */ class User extends AbstractLightBaseObject { }
To use:
$arr = [ 'name' => 'test', 'age' => '17', 'child' => [ 'name' => 'test1', 'age' => '17', ], 'children' => [ [ 'name' => 'test2', 'age' => '17', ], ], ]; $user = new User($arr); // if the user object does not extend AbstractLightBaseObject, you should use: // $user = new User(); // \CodeMagpie\ArrayToObject\ArrayToObjectBuilder::createFormPropertyDocParser()->bind($user); // echo \CodeMagpie\ArrayToObject\Utils\DataHelper::objectToArray($user);// Array echo $user->name; // test echo $user->age; // 17 echo $user->child->name; // test1 echo $user->children[0]->name; // test2 echo $user->toArray() //Array. if extend AbstractLightBaseObject