fenzland / data-parser
0.1.0
2018-03-21 12:56 UTC
Requires
- php: >=7.1.0
- fenzland/php-helpers: >=1.4.1
This package is not auto-updated.
Last update: 2024-09-15 05:28:44 UTC
README
一个将数据统一到特定结构中的库,并使用给定元数据将数据从一种结构转换到另一种结构。
用法
composer require fenzland/data-parser
use Fenzland\DataParser\Unifier; use Fenzland\DataParser\Transformer; $unifier= Unifier::make_( $unifying_meta ); $unifier->unify( $data ); $transformer= Transformer::make_( $transforming_meta ); $transformer->transform( $data );
元数据结构
统一元数据
标量。
[ "key"=> [ // Type of value. Available scalar values are: // 'bool', 'boolean', // 'int', 'integer', // 'float', 'double', // 'string', // 'auto', // 'null', 'type'=> "string", // Default value 'default'=> "default_value", // Hard value // 'value'=> "hard_value", ], ];
标量的简化形式。
[ "key"=> true, // is simplified form of "key"=> [ 'type'=> 'bool', 'default'=> true, ], "key"=> 5, // is simplified form of "key"=> [ 'type'=> 'int', 'default'=> 5, ], "key"=> 1.0, // is simplified form of "key"=> [ 'type'=> 'float', 'default'=> 1.0, ], "key"=> "default_value", // is simplified form of "key"=> [ 'type'=> 'string', 'default'=> "default_value", ], "key"=> null, // is simplified form of "key"=> [ 'type'=> 'null', 'value'=> null, ], ];
映射。
[ "key"=> [ 'type'=> 'map', 'items'=> [ "column_0"=> /* a unifying meta */, "column_1"=> /* a unifying meta */, ], ], ];
数组。
[ "key"=> [ 'type'=> 'array', 'item'=> [ // a unifying meta 'type'=> ..., 'default'=> ..., ], ], ];
映射的数组。
[ "key"=> [ 'type'=> 'array', 'item'=> [ 'type'=> 'map', 'items'=> [ "column_0"=> /* a unifying meta */, "column_1"=> /* a unifying meta */, ], ], ], ];
数组切片。
[ "key"=> [ 'type'=> 'array', 'item'=> /* a unifying meta */, 'slice'=> [ 0, -2 ], // Will call array_slice( $array, 0, -2 ); ], ];
转换元数据
标准。
// meta [ "foo"=> [ 'type'=> 'value', 'keys'=> [ "Foo", "Bar", ], 'meta'=> [ // a unifying meta 'type'=> 'string', ], ], ]; // Transform [ "Foo"=> [ "Bar"=> 8, ], ]; // Into [ "foo"=> "8", ];
简化。
[ "key"=> "Foo", // and "key"=> [ 'type'=> 'value', 'keys'=> "Foo", 'meta'=> [ 'type'=> 'auto', ], ], // are simplified form of "key"=> [ 'type'=> 'value', 'keys'=> [ "Foo", ], 'meta'=> [ 'type'=> 'auto', ], ], ];
映射。
[ "key"=> [ 'type'=> 'map', 'items'=> [ 'column_0'=> /* a transforming meta */, 'column_1'=> /* a transforming meta */, ], ], ];
具有复杂的统一元数据。
[ "key"=> [ 'type'=> 'value', 'keys'=> [ "foo", "0", "bar", ], 'meta'=> [ 'type'=> 'map', 'items'=> [ "field_0"=> "", "field_1"=> 0, "field_2"=> [ 'type'=> 'array', 'item'=> [ 'type'=> 'int', 'default'=> 0, ], ], ], ], ], ];