tiny-blocks/mapper
最新稳定版本:1.1.1
Composer 安装命令:
composer require tiny-blocks/mapper
包简介
Allows mapping data between different formats, such as JSON, arrays, and DTOs, providing flexibility in transforming and serializing information.
README 文档
README
Overview
Allows mapping data between different formats, such as JSON, arrays, and DTOs, providing flexibility in transforming and serializing information.
Installation
composer require tiny-blocks/mapper
How to use
The examples demonstrate how to create objects from iterables, map objects to arrays, and convert objects to JSON.
Create an object from an iterable
First, define your classes using the ObjectMapper interface and ObjectMappability trait:
<?php declare(strict_types=1); namespace Example; use TinyBlocks\Mapper\ObjectMappability; use TinyBlocks\Mapper\ObjectMapper; final readonly class ShippingAddress implements ObjectMapper { use ObjectMappability; public function __construct( private string $city, private ShippingState $state, private string $street, private int $number, private ShippingCountry $country ) { } }
Next, define a collection class implementing IterableMapper:
<?php declare(strict_types=1); namespace Example; use TinyBlocks\Collection\Collection; use TinyBlocks\Mapper\IterableMappability; use TinyBlocks\Mapper\IterableMapper; final class ShippingAddresses extends Collection implements IterableMapper { use IterableMappability; public function getType(): string { return ShippingAddress::class; } }
Finally, create a class that uses the collection:
<?php declare(strict_types=1); namespace Example; use TinyBlocks\Mapper\ObjectMappability; use TinyBlocks\Mapper\ObjectMapper; final readonly class Shipping implements ObjectMapper { use ObjectMappability; public function __construct(public int $id, public ShippingAddresses $addresses) { } }
Now you can map data into a Shipping object using fromIterable:
<?php use Example\Shipping; $shipping = Shipping::fromIterable(iterable: [ 'id' => PHP_INT_MAX, 'addresses' => [ [ 'city' => 'New York', 'state' => 'NY', 'street' => '5th Avenue', 'number' => 717, 'country' => 'US' ] ] ]);
Map object to array
Once the object is created, you can easily convert it into an array representation.
$shipping->toArray();
This will output the following array:
[
'id' => 9223372036854775807,
'addresses' => [
[
'city' => 'New York',
'state' => 'NY',
'street' => '5th Avenue',
'number' => 717,
'country' => 'US'
]
]
]
Map object to JSON
Similarly, you can convert the object into a JSON representation.
$shipping->toJson();
This will produce the following JSON:
{
"id": 9223372036854775807,
"addresses": [
{
"city": "New York",
"state": "NY",
"street": "5th Avenue",
"number": 717,
"country": "US"
}
]
}
License
Mapper is licensed under MIT.
Contributing
Please follow the contributing guidelines to contribute to the project.
统计信息
- 总下载量: 285
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 1
- 依赖项目数: 3
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2024-12-24