habibeh92 / converter
本包最新版本(v1.0.0)没有提供许可证信息。
mapper
v1.0.0
2022-12-02 16:28 UTC
Requires
- php: >=8.0
- ext-json: *
- ext-simplexml: *
Requires (Dev)
- phpunit/phpunit: 9.5.x-dev
README
简单的数据转换器,可以将JSON和XML等不同类型的数据转换为指定的实体。
安装
您可以通过以下命令使用composer在您的应用程序中安装它:
composer require habibeh92/converter
需求
"php": ">=8.0"
如何使用
安装后,您可以将任何类型的数据轻松转换为预定义的对象(目前支持JSON和XML)。在这种情况下,您需要调用Converter
类的handle
方法,该方法需要一个Decoder
实例,以便简单地转换您的数据。该方法接收实体实例和需要转换的数据,并返回一个初始化的实例。
$entity = new DataEntity(); $converter = new Converter(new JsonDecoder()); $entity = $converter->handle($entity, $json_data);
定义实体
将要填充数据的实体应该具有一些预定义属性,并具有指定的DataType
属性。DataType
需要两个参数,field
和type
,其中field
是必需的,它显示传入数据中的字段名称。对于数组属性,应填写type
参数,并显示每个对象所属的实体。
<?php namespace Converter\Tests\Feature\Entities; use Converter\Attributes\DataType; class Post { #[DataType(field: 'title')] public string $title; #[DataType(field: 'name')] public string $slug; #[DataType(field: 'content-labels', type: Label::class)] public array $labels; }
自定义解码器
您可以创建自己的自定义解码器(如HTML解码器)。所有解码器都需要实现Converter\Decoders\Decoder
接口。您应该在解码器中实现handle
方法,该方法接受$data
参数,并将数据解码为数组并返回它。
<?php namespace Converter\Decoders; use Converter\Decoders\Decoder; class HtmlDecoder implements Decoder { /** * @inheritDoc */ public function handle($data): array { $array = $this->decodeToArray($data); // convert the data to an array return $array; } }
贡献
感谢您考虑贡献。请随时创建pull请求。
希望您喜欢它。