koala-framework/sync-base

dev-master 2023-02-27 08:56 UTC

README

标准化器

可配置标准化器

可配置标准化器可用于标准化原始数据的整个结构。必须将规范化配置传递给其构造函数。

  • 每个配置键表示规范化字段(输出)的名称
  • 每个配置值表示原始数据对象(输入)中的键的名称。可以通过点(.)分隔多个嵌套键来检索嵌套值
  • 可以通过将它们分组到数组中来优先考虑原始数据对象的值。第一个值将具有最高优先级。如果该值在原始数据对象中不存在,则将使用下一个值,依此类推。
$normalizationConfig = array(
    // one to one mapping:
    'normalizedFieldName1' => 'rawDataFieldName',
    // nested mapping:
    'normalizedFieldName2' => 'nested.rawDataFieldName',
    // prioritized mappding:
    'normalizedFieldName2' => 'array(
        'rawDataFieldName',
        'alternativeRawDataFieldName',
        'nested.alternative.rawDataFieldName'
    )
);

可配置标准化器可以包括其他标准化器的配置。这可以包含三个参数

  • 字段:原始数据对象中的键(也可以是嵌套的或省略的,如果 StaticValue-标准化器)
  • :标准化器的类
  • 参数:将传递给标准化器构造函数的参数

MapRawValue

此标准化器将一个或多个来自原始数据对象的值映射到指定的规范化值。以下是一个将 MapSyncedValue-标准化器传递到 ConfigurableNormalizer 配置的示例

$normalizationConfig = array(
    'normalizedFieldName' => array(
        'class' => 'Kwf\SyncBaseBundle\Services\Sync\Normalizer\MapRawValue',
        'field' => 'nested.rawDataFieldName',
        'args' => array(array(
            'rawValue' => 'normalizedValue',
            'Allrad' => 'A',
            'Allradantrieb' => 'A',
            'Allrad permanent' => 'A',
            'Allrad zuschaltbar' => 'A',
            'Allrad allgemein' => 'A',
            'Front' => 'F',
            'Frontantrieb' => 'F',
            'Vorderrad' => 'F',
            'Vorderradantrieb' => 'F',
            'Hinterrad' => 'H',
            'Hinterradantrieb' => 'H',
            'Heckantrieb' => 'H',
            'Heck' => 'H'
        ))
    )
);

StaticValue

此标准化器设置一个静态值,该值不来自原始数据对象,但应包含在规范化数据对象中。

$normalizationConfig = array(
   'normalizedFieldName' => array(
       'class' => 'Kwf\SyncBaseBundle\Services\Sync\Normalizer\StaticValue',
       'args' => array(
           'staticValue'
       )
   )
);

RawValueJsonAggregator

此标准化器将来自原始数据对象的多个值转换为将分配给单个规范化字段的JSON字符串。 字段 包含一个原始数据字段名称数组,而 参数 包含一个映射数组,其键是规范化JSON对象中的键,值是传递给 字段 的相同原始数据字段。

$normalizationConfig = array(
   'normalizedFieldName' => array(
       'class' => 'Kwf\SyncBaseBundle\Services\Sync\Normalizer\RawValueJsonAggregator',
       'field' => array(
            'nested.rawDataFieldName',
            'rawDataFieldName',
            'another.nested.rawDataFieldName'
        )
       'args' => array(array(
           'keyForRawDataFieldName' => 'nested.rawDataFieldName',
           'anotherKeyInTheJsonObject' => 'rawDataFieldName',
           'yetAnotherKey' => 'another.nested.rawDataFieldName'
       ))
   )
);