tlucas/phpjstore

此包已废弃,不再维护。未建议替代包。

v1.1.4 2017-05-19 08:55 UTC

This package is not auto-updated.

Last update: 2022-04-30 14:38:58 UTC


README

Latest Stable Version Latest Unstable Version License

Phpjstore 提供了一个类,用于在平面文件 JSON 后端中保存和访问无模式的数据库。

要求

Phpjstore 本身不依赖任何其他库。

管理界面使用 Jeremy Dorn 的 json-editor(包含在包中),jqueryBootstrap 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);
}