Bmob
轻松搭建应用数据库,支持可视化操作
提供可视化的云端数据表设计界面,轻松建库建表。支持10种不同数据类型存储:如字符串,整型,数组等。
正题
今天,我们要把Bmob中的数据库集成typecho插件。
这样,我们可以在typecho中,把要用的,很大量的,但是不是很重要的数据储存在bmob数据库。减小博客本地是数据库。
不要问为什么,因为 bmob 免费可以建表 20 张,表行数 10 万行
多不多,可以为自己的数据库减压。但是每次线路要开少一点,不然会有延迟。
我写了一个插件,这样其他的插件可以基于这个bmob插件开发插件。
使用
- 下载插件 https://github.com/kraity/typecho-bmob/archive/v1.0.zip
- 安装插件
- 启用插件
- 到https://www.bmob.cn,注册账号,然后创建应用
- 进入应用列表,点击应用设置,点击应用密匙
- 拿到
Application ID
和REST API Key
- 然后再插件配置页面,对于配置
警告
Bmob
插件的文件夹名必须为Bmob
导入类
你会发现,在lib目录中发现很多类。
在你需要的地方导入需要的类。
比如我们再其他插件或者或者在主题中,要导入类,new对象,使用
比如我们要用到类lib/BmobObject.class.php
导入:
include_once Bmob_Plugin::findDir("BmobObject.class.php");
比如导入
include_once Bmob_Plugin::findDir("BmobUser.class.php");
可能有的类需要用到Application ID
和REST API Key
可以这样获取
Bmob_Plugin::getRestKey();
Bmob_Plugin::getAppId();
写入数据
BmobObject 的例子
简单例子
<?php
include_once Bmob_Plugin::findDir("BmobObject.class.php");
try {
/*
* BmobObject 的例子
*/
$bmobObj = new BmobObject("GameScore"); //GameScore为表名
$res = $bmobObj->create(array("score"=>80,"playerName"=>"game")); //插入数据,返回id
var_dump($res); //打印对象,让我们看看清除结构
} catch (Exception $e) {
echo $e;
}
杂合例子
<?php
include_once Bmob_Plugin::findDir("BmobObject.class.php");
include_once Bmob_Plugin::findDir("BmobUser.class.php");
try {
/*
* BmobObject 的例子
*/
$bmobObj = new BmobObject("GameScore");
$res=$bmobObj->create(array("score"=>80,"playerName"=>"game")); //添加对象
$res=$bmobObj->get("bd89c6bce9"); // 获取id为bd89c6bce9的对象
$res=$bmobObj->get(); //获取所有对象
//更新对象bd89c6bce9, 任何您未指定的key都不会更改,所以您可以只更新对象数据的一个子集
$res=$bmobObj->update("bd89c6bce9", array("score"=>60,"playerName"=>"game"));
$res=$bmobObj->delete("bd89c6bce9"); //删除对象bd89c6bce9
//对象的查询,这里是表示查找playerName为"game"的对象,只返回2个结果
$res=$bmobObj->get("",array('where={"playerName":"game"}','limit=2'));
//id为bd89c6bce9的field score数值减2
$res=$bmobObj->increment("bd89c6bce9","score",array(-2));
//id为bd89c6bce9的field score数值加2
$res=$bmobObj->increment("bd89c6bce9","score",array(2));
/*
* BmobUser 的例子
*/
$bmobUser = new BmobUser();
//用户注册, 其中username和password为必填字段
$res = $bmobUser->register(array("username"=>"cooldude117", "password"=>"p_n7!-e8", "phone"=>"415-392-0202", "email"=>"bmobtest111@126.com"));
//用户登录, 第一个参数为用户名,第二个参数为密码
$res = $bmobUser->login("cooldude117","p_n7!-e8");
// 获取id为415b8fe99a用户的信息
$res = $bmobUser->get("415b8fe99a");
$res = $bmobUser->get(); // 获取所有用户的信息
$res = $bmobUser->update("415b8fe99a", "050391db407114d9801c8f2788c6b25a", array("phone"=>"02011111")); // 更新用户的信息
// 请求重设密码,前提是用户将email与他们的账户关联起来
$res = $bmobUser->requestPasswordReset("bmobtest111@126.com");
// 删除id为415b8fe99a的用户, 第一参数是用户id, 第二个参数为sessiontoken,在用户登录或注册后获取, 必填
$res = $bmobUser->delete("415b8fe99a", "050391db407114d9801c8f2788c6b25a");
/*
* BmobCloudCode 的例子
*/
//调用名字为getMsgCode的云端代码
$cloudCode = new BmobCloudCode('getMsgCode');
//传入参数name,其值为bmob
$res = $cloudCode->get(array("name"=>"bmob"));
var_dump($res);
} catch (Exception $e) {
echo $e;
}
SQL语法
注意,使用的语法和typecho封装的语句完全不一样,不要照搬就抄
一般插件使用的typecho封装数据库语句,注入。但是bmob有自己封装的。
一般插件使用的typecho封装数据库语句,注入。但是bmob有自己封装的。
但是bmob也支持sql语句。
例子
include_once Bmob_Plugin::findDir("BmobBql.class.php");
$bmobBql = new BmobBql();
$res = $bmobBql->query(array('bql'=>'select * from GameScore where score=?', 'values'=>'[11]'));
高级写入
详细请到:
点击下面的链接,里面详细的讲述。
https://github.com/bmob/bmob-php-sdk/blob/master/doc_develop/README.md
PR
欢迎PR
Github: https://github.com/kraity/typecho-bmob