r0mdau/jisly

最小的NoSQL数据库库,扁平文件JSON。

2.2.0 2024-03-16 17:08 UTC

This package is auto-updated.

Last update: 2024-09-02 01:41:58 UTC


README

PHPUnit Coverage Status Known Vulnerabilities

最小的PHP轻量级NoSQL数据库库,扁平文件JSON。

Jisly的主要目标是允许您使用NoSQL(面向文档)查询语法,通过内存和扁平文件存储快速开始项目。

在此处查看法语版本

并发访问得到管理!

如何安装和加载

此库可在Packagist上找到

composer require r0mdau/jisly:^2.0

加载库

Jisly依赖于PSR-4规范来自动从文件路径加载类。

use Jisly\JislyCollection;

public function saveCart(): void {
    $jisly = new JislyCollection("/tmp/data", "cart");
    ...
}

定义

  1. 每个文档都有一个唯一的标识符,称为_rid
  2. 每个集合在物理上由一个文件表示。
  3. 文件存储在单个工作目录中。Jisly类通过将此目录的路径作为参数实例化。
  4. 每次您进行CRUD操作时,所有数据都存储在内存中。
  5. 并且数据保存到文件系统中。

使用示例

类初始化

$directory包含数据模型文件(=集合)将存储的目录的路径。

$database = new Jisly($directory);

要访问集合

$name包含我们想要请求的集合的名称。例如:user

返回一个JislyCollection对象

$database->collection($name);

警告:每次您第一次访问集合时,所有数据都会存储在内存中。

要调用集合

前言:Insert、Update、Delete方法返回布尔值,如果操作成功则返回true,否则返回false

插入方法

以JSON格式将数组插入到指定的集合中,并为文档分配一个唯一标识符_rid(如果没有指定)

$successBool = $database->collection($file)->insert(
  [
    "name" => "Lucas",
    "firstname" => "Georges"
  ]
);

删除方法

您必须先找到所有要删除的文档,然后将_rid属性提供给删除方法。

移除集合中具有$rid属性值的唯一文档

$successBool = $database->collection($file)->delete($rid);

选择方法

返回集合中的所有文档的array()对象

$results = $database->collection($file)->find();

返回具有name属性值为Lucas的集合中的所有文档的array()对象

$results = $database->collection($file)->find(
  [
    "name" => "Lucas"
  ]
);

返回具有name属性值为19的对象

$result = $database->collection($file)->findOne(
  [
    "name" => 19
  ]
);

逻辑运算符OR和AND

这两个逻辑运算符可用于findfindOne方法。

如果没有提供逻辑运算符,则使用OR

返回具有name属性值为Lucas或具有firstname属性值为Georges的集合中的所有文档的array()对象

$result = $database->collection($file)->find(
  [
    "firstname" => "Georges",
    "name" => "Lucas"
  ], JislyCollection::LOGICAL_OR
);

返回具有name属性值为Lucas并且具有firstname属性值为Georges的集合中的第一个文档的array()对象

$result = $database->collection($file)->findOne(
  [
    "firstname" => "Georges",
    "name" => "Lucas"
  ], JislyCollection::LOGICAL_AND
);

更新方法

对于修改,有关文档将完全替换为参数中提供的第二个array()

您必须先找到所有要替换的文档,然后将_rid属性提供给更新方法。

修改集合中具有$rid属性值的唯一文档

$successBool = $database->collection($file)->update(
  $rid,
  [
    "firstname" => "Georges",
    "name" => "Lucas"
  ]
);