Bmob

轻松搭建应用数据库,支持可视化操作
提供可视化的云端数据表设计界面,轻松建库建表。支持10种不同数据类型存储:如字符串,整型,数组等。

正题

今天,我们要把Bmob中的数据库集成typecho插件。
这样,我们可以在typecho中,把要用的,很大量的,但是不是很重要的数据储存在bmob数据库。减小博客本地是数据库。

不要问为什么,因为 bmob 免费可以建表 20 张,表行数 10 万行
多不多,可以为自己的数据库减压。但是每次线路要开少一点,不然会有延迟。

我写了一个插件,这样其他的插件可以基于这个bmob插件开发插件。

使用

  1. 下载插件 https://github.com/kraity/typecho-bmob/archive/v1.0.zip
  2. 安装插件
  3. 启用插件
  4. https://www.bmob.cn,注册账号,然后创建应用
  5. 进入应用列表,点击应用设置,点击应用密匙
  6. 拿到Application IDREST API Key
  7. 然后再插件配置页面,对于配置

警告

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 IDREST 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