thecodingmachine/metahydrator

Mouf的Hydrator接口的可配置实现

1.x-dev 2018-11-06 15:28 UTC

This package is auto-updated.

Last update: 2024-09-07 04:57:43 UTC


README

Latest Stable Version Total Downloads Latest Unstable Version License Scrutinizer Code Quality Build Status Coverage Status

关于数据填充

此包旨在帮助处理原始数据(基本类型的关联数组)以编辑和创建任何类别的实例。因此,提供此类解决方案的类应实现接口Hydrator,即方法hydrateObjecthydrateNewObject

  • 方法hydrateNewObject应使用解析数据创建请求的类的实例,并设置其值。
  • 方法hydrateObject应编辑给定的对象,使用解析数据设置其属性。此包提供了一个通用的HydratorMetaHydrator实现,旨在特别与Mouf一起使用。

如何使用?

此包的主要优点是避免编写重复的代码行来描述如何管理某些输入数据(例如验证、解析和从它创建实例),而是将数据处理器的创建简化为简单的配置任务。配置,或者说“依赖注入”。这正是Mouf的强大之处:这个工具,结合当前的库,将允许你通过拖放/命名操作创建数据解析器/验证器,偶尔编写一些小代码(如果你希望实现自己的原子解析器或验证器),但无需重复。

它如何工作?

数据解析

MetaHydrator使用HydratingHandlerInterface的实例来解析和验证原始输入。这样的实例应解析输入数组中的特定键(使用配置的ParserInterface实例),并且可能会抛出异常(Invalid)。在SimpleHydratingHandler实现HydratingHandlerInterface时,处理输入数组数据中的特定键,即解析该键的值,如果解析成功,则验证解析值。请注意,这种验证不应考虑其他解析值,因为处理程序在检查其处理值的合理性之前不会等待所有值都被解析。

数据验证

ValidatorInterface的实现必须实现validate方法;如果输入数据正确,则此方法不会执行任何操作,如果不正确,则将抛出InvalidValueException异常。当构造此类异常时需要一个innerErrorsMap。一个良好的错误映射应该是一个关联数组,键是字符串,值可以是字段错误的描述(例如,一个DetailedErrorMessage,例如)或一个良好的错误映射。更具体地说,其结构应与输入数据一致,其中无效字段将被那些错误描述所取代。

应用解析数据

使用内部简单填充器(默认情况下,TDBMHydrator似乎是一个不错的选择),解析的数据最终可以用两种不同的方式使用:你可以将其应用于已存在的对象(使用填充器的hydrateObject方法实现),或者创建你希望实例化的类的实例(使用hydrateNewObject方法)。