开始
激动人心的时刻到来了,让我们开始开发第一个模块吧。
在此之前,请先确认你已经理解并阅读了 规范 , 模块的基础 , 模块的配置文件 等内容。
本篇指导将指引你开发一个简单的留言板模块,通过这个简单而经典的程序来熟悉 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模式,如果对这个模式的概念不理解,也可以用普通的方法来操作数据层。数据层的使用方式会在后续的开发中陆续会提到。
至此,基本的准备工作已完成。你可以开始安装了