准备

admin 发表于 2018-05-14 16:14 上一篇 下一篇

首页 > 技术文档 > 开发一个模块

准备
发表于 2018-05-14 16:14

开始

激动人心的时刻到来了,让我们开始开发第一个模块吧。

在此之前,请先确认你已经理解并阅读了 规范 , 模块的基础 , 模块的配置文件 等内容。

本篇指导将指引你开发一个简单的留言板模块,通过这个简单而经典的程序来熟悉 IBOS 模块化开发流程。灵活定义你所需要的功能。

准备

假设我们已经安装好IBOS。打开程序文件夹,进入到 system/modules/ , 新建一个文件夹并起名为messageboard

建立该模块的目录结构,根据需求,我们创建六个文件夹。创建完后,messageboard目录下的结构是:

配置文件

如果还不明白模块的配置文件是什么东西,建议你赶紧去补一补 模块的配置文件 ,否则你很有可能看不明白以下的代码在写什么

在 install 目录,新建 config.php,并输入如下代码:

 array(
        'name' => '留言板',
        'description' => '提供留言信息',
        'author' => 'banyan @ IBOS Team Inc',
        'version' => '1.0'
    ),
    'config' => array(
        'modules' => array(
            'messageboard'=>array(
                'class' => 'application\modules\messageboard\MessageboardModule'
            )
        ),
        'components' => array(
            'messages' => array(
                'extensionPaths' => array(
                    'messageboard' => 'application.modules.messageboard.language'
                )
            )
        ),
    ),
);

新建数据表

用数据库管理工具 Navicat for Mysql , 链接当前IBOS使用的数据库,并新建表messageboard 和 messageboard_reply:

注意要加表前缀,这里暂以ibos_为例

CREATE TABLE `ibos_messageboard` (
  `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT COMMENT '流水ID',
  `uid` mediumint(8) unsigned NOT NULL COMMENT '用户ID',
  `time` int(10) unsigned NOT NULL COMMENT '留言创建时间',
  `content` mediumtext CHARACTER SET utf8 NOT NULL COMMENT '留言内容',
  `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '留言状态 (0为禁止 1为正常 -1为删除)',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;


CREATE TABLE `ibos_messageboard_reply` (
  `rid` mediumint(8) unsigned NOT NULL AUTO_INCREMENT COMMENT '回复ID',
  `mid` mediumint(8) unsigned NOT NULL COMMENT '留言ID',
  `uid` mediumint(8) unsigned NOT NULL COMMENT '回复者ID',
  `time` int(10) unsigned NOT NULL COMMENT '回复时间',
  PRIMARY KEY (`rid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

配置安装数据

将这两个表的sql语句导出为model.sql,复制到install文件夹中。

DROP TABLE IF EXISTS {{messageboard}};
CREATE TABLE `{{messageboard}}` (
  `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT COMMENT '流水ID',
  `uid` mediumint(8) unsigned NOT NULL COMMENT '用户ID',
  `time` int(10) unsigned NOT NULL COMMENT '留言创建时间',
  `content` mediumtext CHARACTER SET utf8 NOT NULL COMMENT '留言内容',
  `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '留言状态 (0为禁止 1为正常 -1为删除)',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

DROP TABLE IF EXISTS {{messageboard_reply}};
CREATE TABLE `{{messageboard_reply}}` (
  `rid` mediumint(8) unsigned NOT NULL AUTO_INCREMENT COMMENT '回复ID',
  `mid` mediumint(8) unsigned NOT NULL COMMENT '留言ID',
  `uid` mediumint(8) unsigned NOT NULL COMMENT '回复者ID',
  `time` int(10) unsigned NOT NULL COMMENT '回复时间',
  PRIMARY KEY (`rid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

这里的{{}}是替代语法,实际操作这些sql语句时,会替换为当前数据库的表前缀+表名

创建默认数据层文件

在model文件夹下,创建message和message_reply两个数据表的数据层(即model层)。里面暂时只需要两个默认方法。

MessageBoard.php

<?php
namespace application\modules\messageboard\model;
use application\core\model\Model;
class MessageBoard extends Model{

    public static function model($className = __CLASS__){
        return parent::model($className);
    }

    public function tableName()
    {
        return '{{messageboard}}';
    }
}

Reply.php

<?php
namespace application\modules\messageboard\model;
use application\core\model\Model;
class MessageBoardReply extends Model{

    public static function model($className = __CLASS__){
        return parent::model($className);
    }

    public function tableName()
    {
        return '{{messageboard_reply}}';
    }
}

数据层文件的命名规则是:驼峰+数据表的名字,无分隔线。如表名是messageboard_reply,文件名就是MessageBoardReply。

数据层类名与文件名一致,全部继承或间接继承于ICModel全局组件。如果是间接继承,父类的不能重写上述代码里的静态model方法和tableName方法。

IBOS3.0的数据层用的是 ActiveRecord模式,如果对这个模式的概念不理解,也可以用普通的方法来操作数据层。数据层的使用方式会在后续的开发中陆续会提到。


至此,基本的准备工作已完成。你可以开始安装了

以上信息是否对您有帮助?
0.0232s