daumling / php-dataset
基于JSON的,类似SQL的PHP结构化数据操作
1.0.2
2020-05-04 13:23 UTC
Requires
- php: >=7.2.0
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');