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 = '');
贡献
- 查找开放问题或创建新问题以开始有关错误或功能的讨论。
- 在GitHub上分支存储库以开始更改。
- 为新的功能或暴露错误的特性编写一个或多个测试。
- 对代码进行更改以实现功能或修复错误。
- 发送拉取请求以合并和发布您的更改。
谢谢...