imevul/mapster

轻量级数据映射器。

1.1.5 2013-06-27 16:02 UTC

This package is auto-updated.

Last update: 2020-08-08 16:53:57 UTC


README

Latest Stable Version Total Downloads Latest Unstable Version License

Mapster

一个轻量级的PHP数据映射库。轻松将json_decoded结构转换为实际类。

Flattr

许可证

MIT (https://open-source.org.cn/licenses/MIT)

待办事项

什么都没有!目前我们已经完成了。如果您发现了一个错误或有一个很棒的想法,请务必打开一个问题!

需求和限制

  • PHP v5.3+
  • 映射的类必须有一个空的构造函数: __construct();
  • array 是一个保留的类名,映射到常规数组。

安装

您可以选择下载代码并包含 Mapster/Mapster.php 文件,或者如果您使用Composer,只需将以下要求添加到您的composer.json文件中

{
	"require": {
		"imevul/mapster": "dev-default"
	}
}

这将把最新的源代码作为依赖项添加到您的项目中,并通过Composer自动加载功能自动加载。如果您想确保您有一个稳定的版本,您可以指定版本号。例如

{
	"require": {
		"imevul/mapster": ">=1.1.1"
	}
}

请查看 标签页面 以获取最新版本。

用法

此库处理手动指定的映射以及从解码数据中生成的“魔法”映射。例如,以下数据将被转换为 Square

{
  "__class__": "Square",
  "width": 20,
  "height": 20
}

对于手动映射,您可以指定以下形式的映射

$map = array(
  "__class__" => "Square",
  "squareField" => array(
    "__class__" => "Triangle",
    "triangleField" => array(
      "__class__" => "array",
      "0" => array(
        "__class__" => "Circle",
        "circleField" => 3
      )
    )
  )
)

这将映射以下数据

{
  "squareField": {
    "triangleField": [
      {
        "circleField": 3
      }
    ]
  }
}

到以下结构

new Square {
  $squareField = new Triangle() {
    $triangleField = array(
      new Circle() {
        $circleField = 3;
      }
    )
  }
}

要使用映射器,只需包含库文件并运行

$mapper = new Mapster();
$result = $mapper->map($data);

其中 $data 是您希望映射的数组/对象结构。

自动映射器

从版本1.1.0开始,Mapster现在支持所谓的自动映射器。

自动映射器是尝试将某些数据映射到一个或多个类中的自定义类。这对于您无法直接控制数据输入生成方式的情况非常有用,例如使用json_decoded DateTime对象。有关如何编写自己的自动映射器的示例,请参阅包含的DateTime映射器以及自动映射器接口。

如果您不打算使用此功能,请使用配置禁用此功能。

自动装箱

从版本1.1.5开始,您现在可以使用可选的PropertyType注解将实际值自动转换为对象实例。例如

class Entity {
	/** @PropertyType("Square") */
	public $square;
}

这将使用square的构造函数将值转换为square,如下所示

$entity->square = new Square($entity->square);

您如何使用它取决于您自己。如果项目中需要 doctrine/common,则默认启用。您还可以通过设置 $config['use_autoboxing'] = FALSE 禁用自动装箱。

最后

如果您发现任何错误或认为适合此项目的想法,请随时打开问题并/或发送拉取请求。

变更日志

2013-06-27 - v1.1.5

  • 重构测试并添加PHPCS规则集。
  • 添加(可选)基于Doctrine/Common注解的自动装箱支持。

2013-06-20 - v1.1.4

  • 修复了有关受保护的和私有属性的错误。
  • 重构代码并添加了更多单元测试。

2013-06-20 - v1.1.3

  • 更新了文件夹结构,符合psr-0标准。
  • 添加了通过Composer的库自动加载。

2013-06-19 - v1.1.2

  • 将文件夹结构更改为更常见的格式。

2013-06-19 - v1.1.1

  • 添加了Composer支持。
  • 更新了安装说明。

2013-06-19 - v1.1.0

  • 添加了对自定义自动映射器的支持。包括DateTime映射器。

2013-06-19 - v1.0.0

  • 首次发布。已完成完全工作的映射。