demvsystems / mapper
mapper
v2.0.1
2021-07-26 07:07 UTC
Requires
- php: ^7.1 || ^8.0
Requires (Dev)
- codeception/specify: ^0.4.5
- phpunit/phpunit: ^6.2
This package is auto-updated.
Last update: 2024-09-11 14:42:02 UTC
README
Der Mapper旨在灵活地将不同的数组格式转换为和从聚合数组格式转换。通过转换为现有的聚合数组格式,结果可以直接通过数组导入作为客户导入。导出后,可以使用映射器将结果格式更改为先前的格式,这可能是非兼容的。其功能非常简单且灵活。一个例子
$mapper = new Mapper(); $mapper->map('Daten.Vor-Name', function(MapperInterface $mapper, $value) { $mapper->setAttribute('grunddaten.vorname', $value); }); $mapper->map('Finanzen.Netto.Betrag', function(MapperInterface $mapper, $value) { $mapper->setAttribute('finanzen.netto', (int) $value > 0 ? $value : 0); }); $result = $mapper->applyMapping( [ 'Daten' => [ 'Vor-Name' => 'Müller' ], 'Finanzen' => [ 'Netto' => [ 'Betrag' => 1500 ] ] ] );
使用map
方法指定,我们想要将位于子数组Daten
中的键Vor-Name
(即位于此处:['Daten']['Vor-Name']
)写入结果数组子数组grunddaten
的键vorname
。点符号表示任意嵌套的数组结构。$result
因此将是
[
'grunddaten' => [
'vorname' => 'Müller'
],
'finanzen' => [
'netto' => 1500
]
]
使用可选的回调可以在写入之前验证或修改值。
现在存在的结构也可以转换回原始结构
$mapper = new Mapper(); $mapper->map('grunddaten.vorname', function(MapperInterface $mapper, $value) { $mapper->setAttribute('Daten.Vor-Name', $value); }); $mapper->map('finanzen.netto', function(MapperInterface $mapper, $value) { $mapper->setAttribute('Finanzen.Netto.Betrag', $value); }); $source = $mapper->applyMapping($result);
$source
将再次看起来像输入结构
[
'Daten' => [
'Vor-Name' => 'Müller'
],
'Finanzen' => [
'Netto' => [
'Betrag' => 1500
]
]
]
由于聚合中已经存在预定义的结构,除了映射器之外,还有一个KundenMapper
和一个MaklerMapper
,它们提供了相应的功能,如基本数据映射,作为方法提供,在其中可以指定目标和源,使用点符号表示
$mapper->grunddaten('vorname', 'Daten.Vor-Name');
当使用输入时提到的结构时,applyMapping
的结果如下
[
'grunddaten' => [
'vorname' => 'Müller'
]
]