habibeh92 / converter

本包最新版本(v1.0.0)没有提供许可证信息。

mapper

v1.0.0 2022-12-02 16:28 UTC

This package is auto-updated.

Last update: 2024-09-30 01:43:36 UTC


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需要两个参数,fieldtype,其中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请求。

希望您喜欢它。