barbosa/papyrus

使用PHP在文件系统中存储数据

1.0 2016-07-15 18:41 UTC

This package is auto-updated.

Last update: 2024-09-04 05:32:54 UTC


README

一般

Papyrus包可以将信息存储在文件中,执行查询、更新和删除数据。这一切都是基于主键或标识符。信息以JSON格式存储。

安装

通过composer安装(https://getcomposer.org.cn/),在您的composer.json文件中放置以下内容

{
    "require": {
        "barbosa/papyrus": "dev-master"
    }
}

或从github.com下载包

http://github.com/barbosa89/papyrus

配置

Papyrus需要运行一组配置和一个包含文件存储文件夹的路径。

配置数组

在文件中创建一组配置或在实例化Papyrus的文件中。该数组必须有两个键,扩展名和文件。

<?php

/**
 * Example in a configurations file. 
 */

return [

        'extension'	=>	'.project',

        'files' =>  [
                    'users' => ['dni(int#)', 'name', 'lastName']
                    ]
       ];

另一种方法,在实例化Papyrus的文件中

<?php 

require 'vendor/autoload.php';

use \Barbosa\Papyrus\Papyrus;

$config = [

        'extension' =>  '.project',

        'files' =>  [
                    'users' => ['dni(int#)', 'name', 'lastName']
                    ]
        ];

$papyrus = new Papyrus($config);

此扩展名适用于所有文件

'extension' => '.project'

文件结构表示SQL表中的字段,括号中的是每个文件的字段

'files' => [

    'fileName' => ['primaryKey(int#)', 'field', 'otherField'],
    'otherFileName' => ['primaryKey(str#)', 'field', 'otherField']
	
    ]

主键选项

Auto increment integer (int++)
Unique integer (int#)
Unique string (str#)

绝对存储文件夹路径

配置在数组中的存储文件必须创建在用户选择的文件夹中,文件夹路径应传递给Papyrus

<?php 

require 'vendor/autoload.php';

use \Barbosa\Papyrus\Papyrus;

/**
 * Complete example. 
 */

$config = [

        'extension' =>  '.project',

        'files' =>  [
                    'users' => ['dni(int#)', 'name', 'lastName']
                    ]
        ];

$path = realpath(__DIR__ . '/storageFolder/');

$papyrus = new Papyrus($config, $path);

您也可以通过方法切换配置

<?php 

require 'vendor/autoload.php';

use \Barbosa\Papyrus\Papyrus;

/**
 * Complete example with setters. 
 */

$papyrus = new Papyrus();

$papyrus->setStoragePath(realpath(__DIR__ . '/storageFolder/'));

$config = [

        'extension' =>  '.project',

        'files' =>  [
                    'users' => ['dni(int#)', 'name', 'lastName']
                    ]
        ];

$papyrus->loadConfigurations($config);

创建存储文件

例如,将创建一个名为 registers 的文件,扩展名为 .data

$ touch path/to/storageFolder/registers.data

在控制台中

$ ls -l
-rwx---rw- 1 user user 494 jul  8 21:10 registers.data

您可以添加您需要的所有文件。

权限(仅限Linux)

存储文件夹中的文件(path/to/storageFolder/)

chmod 706 fileName.extension

示例

chmod 706 registers.data

快速入门和示例

为了通过示例进行解释,假设有一个名为users的文件,其结构如下

'files' => [
	'users' => ['dni(int#)', 'name', 'lastName']
	]

字段 dni(int#),表示它是主键且是唯一的整数。

需要自动加载文件

require 'vendor/autoload.php';

use \Barbosa\Papyrus\Papyrus;

插入

$values = ['dni' => 123456, 'name' => 'Tony', 'lastName' => 'Stark'];

$papyrus = new Papyrus();
$papyrus->insertInto('users')->values($values)->runQuery();

选择

where方法只能接收数组类型的值,应该是主键或标识符。

选择包含所有字段的文件中的所有内容。
$papyrus->select()->from('users')->runQuery();
选择包含一些字段的文件中的所有内容。
$papyrus->select('dni, name')->from('users')->runQuery();
选择包含所有字段的记录。
$papyrus->select()->from('users')->where(['dni' => 123456])->runQuery();
选择包含一些字段的记录
$papyrus->select('dni, name')->from('users')->where(['dni' => 123456])->runQuery();
选择没有where子句的记录,按字段值升序或降序排序。
$papyrus->select()->from('users')->orderBy(['name' => 'ASC'])->runQuery();

$papyrus->select('dni, lastName')->from('users')->orderBy(['lastName' => 'ASC'])->runQuery();
选择没有where子句但有限制的记录。
$papyrus->select()->from('users')->limit(3)->runQuery();

$papyrus->select()->from('users')->limit(3)->orderBy(['name' => 'DESC'])->runQuery();

删除

删除所有记录
$papyrus->deleteFrom('users')->runQuery();
删除一条记录
$papyrus->deleteFrom('users')->where(['dni' => 123456])->runQuery();

更新

记录的主键不能修改。

更新所有记录
$data = ['name' => 'Tony', 'lastname' => 'Stark'];

$papyrus->update('users')->set($data)->runQuery();
更新一条记录
$data = ['name' => 'Tony', 'lastName' => 'The Iron Man'];

$papyrus->update('users')->set($data)->where(['dni' => 123456])->runQuery();

获取查询数据

$papyrus->getRecords();

获取查询状态

$papyrus->getStatus();

可用方法

Papyrus::select($fields);
Papyrus::deleteFrom($file = '');
Papyrus::update($file = '');            
Papyrus::from($file = '');
Papyrus::insertInto($file = '');
Papyrus::set(array $data = null);
Papyrus::values(array $data = null);
Papyrus::where(array $conditions = null);
Papyrus::orderBy(array $order = null);
Papyrus::limit($limit = 0);
Papyrus::runQuery();
Papyrus::getRecords();
Papyrus::getStatus();
$papyrus->loadConfigurations(array $config = null);
$papyrus->setStoragePath($path = '');

贡献

  1. 查找开放问题或创建新问题以开始有关错误或功能的讨论。
  2. 在GitHub上分支存储库以开始更改。
  3. 为新的功能或暴露错误的特性编写一个或多个测试。
  4. 对代码进行更改以实现功能或修复错误。
  5. 发送拉取请求以合并和发布您的更改。

谢谢...

Omar Andrés Barbosa