Cube小工具开发入门

技术文档网 2021-04-16

小工具的分类

在 Cube 中,小工具分为系统小工具与用户小工具。

系统小工具为 Cube 内置的各项必要功能,以小工具的形式存储于 core/module 中,可以直接调用数据库类操作数据库。

用户小工具,则是用户自行开发或导入的小工具,存储于 Module 中,仅能使用 Cube 提供的公共方法与接口。

一个小工具的基本配置

每个小工具,都有一个 PathName,在 Cube 中使用 PathName 来区别各个小工具。

Module 目录下新建一个文件夹,命名为 MyTool这个文件夹的名字就是小工具的 PathName,该小工具的所有代码、依赖,均要放在该文件夹下。

每个小工具的根目录下都有一个与小工具 PathName 同名的 PHP 文件,这是小工具的入口。Cube 将会加载并读取这个文件。

MyTool 目录下新建 MyTool.php 文件,作为小工具的入口。

MyTool.php 中输入:

<?php
/*
Module Name: 我的小工具
Description: 这是我的第一个 Cube 小工具!
Icon: ticket-star
Author: John Wu
Author URI: https://wuhan5.cc/
Version: 1.0
*/

class MyTool extends CubeModule{
    public function __construct(){
        parent::__construct();
    }

    public function MyTool(){
        $this->Load('MyTool_mainpage.php');
    }
}

每个 Cube 小工具的入口文件都有如上格式的 PHP 注释,包含了小工具的基本信息,Cube 会读取它们。若某些信息不全,Cube 可能将会报错,并停止加载小程序。

  • Module Name 小工具的名称(必填)
  • Description 小工具用途简介
  • Icon 小工具 Font Awesome 图标
  • Author 小工具作者
  • Author URI 小工具网站
  • Version 小工具版本

每一个小工具都继承与CubeModule类,CubeModule类提供了一系列的接口供小工具使用。因为 PHP 语言在子类实例化时不会自动调用父类的构造函数,因此我们需要在小工具的构造函数里调用父类的构造函数。 声明一个公开的方法,方法名与小工具的名字相同。这个方法将成为小工具的入口。 这里我们使用了CubeModule中的一个加载文件的接口:Load(),它可以用恰当的形式加载我们当前小工具目录下的文件。你可以在小工具接口文档中更详细的了解Load()的用法。 这里我们将小工具的主界面MyTool_mainpage.php加载进来。

在小工具目录下新建一个 MyTool_mainpage.php 文件,并输入并保存:

<?php
echo('Hello World! This is the main page of my tool');

访问小工具

在浏览器器中键入 http(s)://你的域名/MyTool 就可以看到你的小工具了。你应该可以在屏幕上看到你代码中输出的那句话。并且在侧边栏中也能够看到你的小工具。

使用 URL 路由

若小工具需要包含多个页面,你可以使用 URL 路由。

现在,我们试着给小工具添加一个页面,在小工具入口 MyTool.php 的构造函数中输入以下语句注册一个路由:

$this->router['AboutMe'] = 'load_about_me_page';

然后输入以下语句声明load_about_me_page方法:

public function load_about_me_page(){
    $this->Load('about_me.php');
}

新建一个名为 about_me.php 的文件,输入以下代码(请原谅我的恶趣味):

<h1>Hello! I am Black Rock Shooter!</h1>
<h5>This is my tool's page.</h5>

保存文件,浏览器访问 http(s)://你的域名/MyTool/AboutMe,可以看到,Cube 现在加载的就是我们刚才创建的 About Me 界面啦~

使用公共方法

公共方法包含一些常用功能的封装,使我们可以快速调用实现常用功能。

静态方法

静态方法,直接使用 Method::方法名 调用即可。 比如:

remove_key($data, $key):去除数组中的 key
get_gravatar():获取 Gravatar 头像信息

需要实例化调用的方法

使用 $mod->方法名 进行调用。

$mod->get_current_page():获取当前页面,配合 URL 路由使用。
$mod->get_current_login_user():获取当前登录用户的信息

数据的存储与读取

每一条数据都会以 keyvalue 存在一个数组中,转换成 json 后存入数据库。

数据的存储 / 修改

$this->Storage->save($key ,$value) 若该数据的 key 已经存在,则会修改该 key 的值。

数据的读取

$this->Storage->get($key)

删除数据中相应的 key

$this->Storage->delete($key)

清空当前小工具所存储的所有数据

$this->Storage->clean_data()

注意:各个小工具仅能调用自身存储的数据,不同小工具之间的数据暂不互通。

相关文章

  1. 如何通过xhprof分析性能

    使用方法 xhprof_enable(); /** ... 要检查的php代码 ... **/ $xhprof_data = xhprof_disable(); // 引入xhprof_lib i

  2. LUMEN API Controller 规范

    1. 第三方依赖库规范 在使用LUMEN实现API接口时,以下库必须需要包含在composer包依赖中,以实现代码编写的一些规范 dingo/api : 实现API接口库 vlucas/phpdo

  3. PHP文件锁

    共享锁(LOCK_SH) 什么时候加共享锁? 当在读取数据的时候同时进行着其他的写操作,这个时候需要对文件加共享锁,否则无论有没有对写操作加写锁都会写入成功,导致数据不一致 当文件获得共享锁时,其他

  4. Hello-Risen-程序

    首先需要说明的是,您下载到的文件包含两部分,其中src中是开发源码,用于对Risen框架本身的开发,risen 目录中是通过源码生成的包含debug和release版本的框架程序,用于您应用程序的开发

  5. PHP自定义类示例(Weixin消息解析类)

    PHP自定义类示例(Weixin消息解析类) /** * Created by Qingger. * User: jsspf * Date: 2017/3/24 * Time: 10:50

随机推荐

  1. 如何通过xhprof分析性能

    使用方法 xhprof_enable(); /** ... 要检查的php代码 ... **/ $xhprof_data = xhprof_disable(); // 引入xhprof_lib i

  2. LUMEN API Controller 规范

    1. 第三方依赖库规范 在使用LUMEN实现API接口时,以下库必须需要包含在composer包依赖中,以实现代码编写的一些规范 dingo/api : 实现API接口库 vlucas/phpdo

  3. PHP文件锁

    共享锁(LOCK_SH) 什么时候加共享锁? 当在读取数据的时候同时进行着其他的写操作,这个时候需要对文件加共享锁,否则无论有没有对写操作加写锁都会写入成功,导致数据不一致 当文件获得共享锁时,其他

  4. Hello-Risen-程序

    首先需要说明的是,您下载到的文件包含两部分,其中src中是开发源码,用于对Risen框架本身的开发,risen 目录中是通过源码生成的包含debug和release版本的框架程序,用于您应用程序的开发

  5. PHP自定义类示例(Weixin消息解析类)

    PHP自定义类示例(Weixin消息解析类) /** * Created by Qingger. * User: jsspf * Date: 2017/3/24 * Time: 10:50