skyree / document-hash-indexer
将 csv 或 json 文档作为键值对索引到 yaml 文件中
v0.1
2019-12-09 18:54 UTC
Requires
- php: ^7.1
- thecodingmachine/safe: ^0.1
Requires (Dev)
- phpunit/phpunit: ^7.0
This package is auto-updated.
Last update: 2024-09-10 06:04:07 UTC
README
此库允许您从 csv 文件或 json 字符串列表生成哈希值的索引。
结果是可以在快速比较中轻松使用的 yaml 文件,以便发现更改、添加和删除。
先决条件
- php 7.1
- ext-json
安装
从您的项目运行 composer require skyree/document-hash-indexer
。
入门
只需实例化一个 HashIndexer
并使用所需键运行 hash
方法即可。
示例
$hashIndexer = new HashIndexer(new JsonParser(), new LazyErrorHandler()); $outputFile = $hashIndexer->hash('file.json', 'foo'); echo file_get_contents($outputFile);
假设 file.json
包含以下内容
{"foo": "aaa", "bar": [{"a": 1, "b": 2}]}
{"foo": "bbb", "bar": [{"y": 4, "z": 5}]}
将得到以下结果
aaa: 7dc9c52dbf3e5a436ac2a40affed4d16 bbb: 288a8a3a1c2a8a370ea20b88b9b0f426
重要提示:如描述中所述,对于 json 文档,预期输入是 json 字符串列表,而不是格式正确的 json 对象。
重要提示 2:请确保您的输入文档具有唯一键(csv 列的值都不同或每行的值都不同的 json 节点),否则生成的 yaml 将无效,因为不允许重复。
解析器
此库附带 2 个解析器
ParserJson
ParserCsv
您可以通过实现 ParserInterface
创建和使用自己的解析器
错误处理器
这些处理器用于在行中找不到键时提供行为;此库附带 2 个处理器
LazyErrorHandler
基本上忽略错误ThresholdErrorHandler
允许最多 n 个错误,然后中断
您可以通过实现 ErrorHandlerInterface
创建和使用自己的处理器
Symfony 集成
此库可以轻松地定义为一个或多个服务
Skyree\DocumentHashIndexer\Parser\JsonParser: ~ Skyree\DocumentHashIndexer\Parser\CsvParser: ~ Skyree\DocumentHashIndexer\ErrorHandler\LazyErrorHandler: ~ my_project.json_hash_indexer: class: Skyree\DocumentHashIndexer\HashIndexer arguments: $parser: '@Skyree\DocumentHashIndexer\Parser\JsonParser' $errorHandler: '@Skyree\DocumentHashIndexer\ErrorHandler\LazyErrorHandler' my_project.csv_hash_indexer: class: Skyree\DocumentHashIndexer\HashIndexer arguments: $parser: '@Skyree\DocumentHashIndexer\Parser\CsvParser' $errorHandler: '@Skyree\DocumentHashIndexer\ErrorHandler\LazyErrorHandler'