使用PHP编写的JSON表模式验证器和存储库。

1.0.0 2016-04-20 08:09 UTC

This package is not auto-updated.

Last update: 2024-09-25 23:03:55 UTC


README

Scrutinizer Code Quality Code Coverage Build Status Dependency Status

使用PHP编写的JSON表模式验证器和存储库。

这是一个非常棒的实用库,用于验证CSV文件、流或其他任何数据源是否符合预定义的JSON表模式定义。

限制

尽管这个库有许多优秀的功能,但它(目前)并不完全遵循JSON表模式规范。

目前不支持规范中的以下部分

  1. 格式:

    • 数组
    • 二进制(这仅作为字符串进行验证)
    • 地理点
    • geojson
  2. 约束目前没有对约束的支持。

  3. 外键

    • 为了满足我们的特定需求,这个库被构建为引用数据库表,而不是规范中概述的数据包。

    接受的相同模式结构,但有以下考虑:* "datapackage"必须是"postgresql"。* "resource"必须是使用可选模式限定符的表名。例如:"import.t_table_name"。* "fields"遵循JSON表规范,但指的是数据库表中的字段。

动机

这个库是为了满足Halo的需求而编写的,Halo是一个由Footwork Solutions Ltd维护的商业客户管理系统。

它被用于验证和存储作为Halo用户导入工具一部分的数据。

在Footwork Solutions中,我们使用了很多开源项目,这个项目和我们的其他开源工作是我们回报我们非常欣赏的社区的一种方式。

使用方法

有关如何验证和存储CSV文件的详细说明,请参阅示例目录

快速入门

验证CSV文件

// Instantiate the analysis class.
$lo_analyser = new \JsonTable\Analyse();

// Let the analyser know where the JSON table schema is.
$lo_analyser->set_schema('/your/file/path/example.json');

// Let the analyser know where the CSV file to validate is.
$lo_analyser->set_file('/your/file/path/example.csv');

// Check whether the file is valid against the schema.
$lb_file_is_valid = $lo_analyser->validate();

存储有效的CSV文件

$lo_store = \JsonTable\Store::load('postgresql');
$lb_file_is_stored = $lo_store->store('your_table_name');

安装

composer require footwork_solutions/json_table

实现注意事项

  • datetime; date; time - fmt:[PATTERN] - 这支持PHP日期格式 @see https://php.ac.cn/manual/en/datetime.formats.date.php
  • datetime; date; time - ISO8610 - 以下格式在没有指定格式的情况下进行验证
    • UTC中的日期和时间合并:2015-03-09T13:07:04Z
    • 日期:2015-03-09
    • 时间:hh:mm:ss
  • 鉴于与ISO8610格式匹配的选项范围,我们建议您始终指定格式。
  • 模式:正则表达式必须包含分隔符。
  • 列名检查不区分大小写。
  • 具有单个字段的外键可以省略在CSV中,并且将忽略外键检查。但是,具有多个字段的外键必须在CSV文件中具有所有这些字段。

贡献者

错误 & 功能请求

请使用问题跟踪器报告任何错误或请求新功能。

开发

欢迎提交拉取请求。

请确保您的代码符合PSR-1PSR-2PSR-4标准。

  1. 分支仓库。
  2. 创建您的功能分支(git checkout -b my-new-feature)。
  3. 提交您的更改。
  4. 将更改推送到分支(git push origin my-new-feature)。
  5. 创建新的拉取请求。

许可证

这是一款在MIT许可证下免费分发的软件。有关详细信息,请参阅许可证