daumling/php-dataset

基于JSON的,类似SQL的PHP结构化数据操作

1.0.2 2020-05-04 13:23 UTC

This package is auto-updated.

Last update: 2024-09-04 23:05:05 UTC


README

查看完整文档:https://daumling.github.io/php-dataset/!

我正在寻找一种简单的方式来操作复杂的PHP数据结构。经过快速的研究,发现了几种解决方案,但都存在一些不足。

Dataset对象接受一个关联数组,其成员可以是数组或对象。它提供类似SQL的调用以搜索和操作数据,并支持JSON文件作为存储介质。其他存储解决方案可以通过继承轻松添加。

此Dataset实现提供以下功能:

  • 轻松处理JSON数据
  • 多种搜索可能性,包括正则表达式
  • 隐藏PHP数组与对象之间的差异
  • 多种存储后端

每个搜索操作返回一个新的Dataset,其中只包含搜索结果。这些子数据集的数据始终按引用存储,这样可以节省内存并使更新变得容易。当然,意外的更新可能不会被注意到,因此需要谨慎使用此概念。

几乎所有的Dataset方法都返回一个Dataset实例,无论是新的数据集还是本身的数据集,因此可以轻松地进行链式调用。可能包含中间结果的数据集可以保存以供以后使用。

以下是一个示例。假设有一个包含以下示例记录的JSON数据库

{
    "name" : "John Smith",
    "age": 44,
    "address" : {
        ...
        "state" : "CA"
    }
}

您可以轻松地迭代退休年龄65岁或以上的退休人员

foreach ($file->where('age', '>=', 65)->fetch() as $record) ...

或者如果您只需要纽约州的退休人员

foreach ($file->where('age', '>=', 65)->where('address.state' '=', 'NY')->fetch() as $record) ...

安装

安装和使用Dataset最简单的方法是使用composer

composer require daumling/php-dataset

您的PHP文件可能看起来像这样

require_once __DIR__.'/vendor/autoload.php';
use \Daumling\Dataset\File as DB;

// set the path
DB::setOptions([
    'path' => __DIR__.'/data/*.json'
]);
// Open data/addresses.json
$file = DB::get('addresses');