tlucas / phpjstore
Requires
- php: ^7.0
Requires (Dev)
- php: ^7.0
This package is not auto-updated.
Last update: 2022-04-30 14:38:58 UTC
README
Phpjstore 提供了一个类,用于在平面文件 JSON 后端中保存和访问无模式的数据库。
要求
Phpjstore 本身不依赖任何其他库。
管理界面使用 Jeremy Dorn 的 json-editor(包含在包中),jquery 和 Bootstrap 3。这些都可以直接包含在您的页面中(使用 CDN)
安装/设置
使用 composer
composer require tlucas/phpjstore
在您的项目文件(例如 project.php)中,您想使用它,请确保您有
require_once('vendor/autoload.php');
use jstore\jstore;
然后您可以使用以下方式实例化一个数据存储对象
$store = new jstore('mydata');
这将把所有数据存储在 mydata 目录中(相对于您的当前脚本)。
基本用法
要与数据对象交互,首先您需要创建一个数据对象。这可以通过调用上面定义的 $store 对象的 get() 方法来完成
$data = $store->get('somekey');
这已经创建了一个包含使用 somekey 键存储的数据的 $data 对象。如果该键尚不存在,这将是一个空的数据对象。
一旦您有了 $object 中的对象,您可以使用 set() 设置一些值
$data->set(['firstkey' => 'firstvalue', 'secondkey' => 'secondvalue']);
这将仅设置指定的值(它不会影响对象中存储的其他值),因此如果我们这样做
$data->set(['thirdkey' => 'thirdvalue']);
这也相当于
$data->thirdkey = 'thirdvalue';
所有三个值现在都将保存在该对象上。
如果我们想删除我们之前设置的第一个变量
$data->delete('firstkey');
因此,现在,我们存储的对象看起来像这样(如果我们做 echo $data;)
{
"firstkey": "firstvalue",
"secondkey": "secondvalue",
"thirdkey": "thirdvalue"
}
要访问这些值
echo $data->firstkey;
将打印 firstvalue。
如果您喜欢使用数组
$data->toArray();
将返回数组
Array
(
[firstkey] => firstvalue
[secondkey] => secondvalue
[thirdkey] => thirdvalue
)
目前,对象只修改了内存中的内容,因此要永久保存更改,只需调用
$data->save();
全局变量
Phpjstore 包含一些用于存储和检索全局变量的快捷函数
要设置全局变量
$store->setGlobal(['varname' => 'varvalue']);
(注意:这 会 立即将变量保存到存储后端)
要检索我们刚刚设置的变量
$store->getGlobal('varname');
要列出以这种方式存储的所有全局变量
$store->getGlobals();
这将返回一个键的列表。
要删除这些存储变量之一
$store->deleteGlobal('varname');
(注意:再次,这 会 立即将变量保存到存储后端)
管理界面
Phpjstore 包含了一个基于 jdorn 的出色 json-editor 的数据管理界面。
在使用之前,它需要一些设置。
脚本/样式
首先,界面使用一个JavaScript文件一次性包含,与jQuery一起,在调用之前某处。它还使用Bootstrap 3进行样式化,所以它也必须在页面上可用。
如果您的页面中尚未使用这些函数,Phpjstore 包含一些辅助函数来为您完成这些操作。
echo jstore::script();
将包含json-editor脚本。如果您还需要包含jQuery,请使用
echo jstore::script($jquery=True);
来包含Bootstrap
echo jstore::bootstrap3();
端点
为了保存表单中提供的数据,您需要为提交设置一个端点。这通过在充当端点的文件顶部添加以下内容来完成:
$store->registerEndpoint();
。这可以与同一文件不同,但必须放置在任何输出之前。
如果您将此端点放置在一个单独的文件中(例如:/path/to/submit.php),则需要将您的管理脚本指向该文件以发送他们的提交。
$store->adminpost = '/path/to/submit.php';
重要:请注意,任何可以访问您在此处设置的端点的人都将能够修改您的数据,所以请确保您保护它,无论是通过将文件放在受限目录中(例如使用Apache上的.htaccess)还是通过在您选择的任何认证系统中使用认证检查来封装方法调用)。
if( /* User is authenticated */ ){
$store->registerEndpoint();
}
数据架构
在添加界面之前,您需要设置数据架构。虽然存储的数据不依赖于任何架构(您可以直接将变量保存到它们中,它将根据需要创建字段)。json-editor界面需要架构来构建适当的表单。
要设置架构,只需转到您的mydata目录(在初始化jstore实例时定义),然后在schema目录中创建一个名为somekey.json的文件。在该文件中,定义一个架构,如这里定义。 (当您首次设置jstore时,将有一个example.json架构供您参考)。
表单
完成了所有这些,我们现在可以显示管理表单了!
要显示为上面创建的somekey架构的表单
echo $store->admin('somekey');
(或者使用提供的示例架构:echo $store->admin('example');)
完成!您应该有一个完整功能表单来修改您的存储数据。
您可以通过运行来列出您定义的所有架构
$store->getSchemas();
所以如果您想要一个管理页面,该页面自动为您提供表单,允许您编辑所有定义的架构,您可以运行
foreach($store->getSchemas() as $schema){
echo $store->admin($schema);
}