php笔记之:初探PHPcms模块开发介绍
由于工作关系,只能暂时放弃对mongodb的研究了.开始研究PHPcms.
目前为止我已经基本完成了模块的开发.趁着周末来这里做个总结.我发现phpcms写的还不错,不过文档什么的确实不多.
不说废话了.对于phpcms的模块开发.首先要了解模块的目录结构.
我们可以在http://v9.help.phpcms.cn/html/2010/structure_0928/69.html
找到他的目录结构 我们要开发的东东(也就是模块)就在/phpcms/modules/下面
如果没有什么特别的在开发一个模块之前先要按照目录结构建立好相关目录并且设计好数据库表结构比方说我们建立一个模块叫做我的模块my_test
下面应该是mytest下的目录结构
mytest
--class//这个是mytest模块会用到的类
--function//mytest模块用到的函数
--install//安装此模块需要的一些配置文件和建立数据表myslq语句什么的在这里
--language//多语言的时候会用到
--config.ini.php//这个配置文件是用来描述整个模块的一些信息
--extention.inc.php//这个是创建目录结构 .这个文件也用来控制权限
--model.php//模块使用了哪些数据模型.(可以理解为使用了哪些表.)
--model.sql//这个向数据库里面插入模型的记录
--my_test.sql//这个文件在安装的时候会被执行,把建立数据库表的sql放进来
--templates//,mytest模块用到的模板文件
--uninstall//卸载模块时候用到的配置和文件
这个里面的文件我没研究 回头研究了补上.
my_test.php//这个是mytest模块的后台控制器文件`
index.php//这个是前台的控制器,这个我没写东西.
建立完一个这样的结构后我们还需要在/phpcms/model/下面建立我们的数据模型
例如 my_test_model.class.php (这个使用了很典型的工厂模式)
具体每个文件里面写了些什么.我们一个一个来看.首先来看我们在model文件夹下面写的那个文件.
<?php
defined("IN_PHPCMS")orexit("Nopermissionresources.");
pc_base::load_sys_class("model","",0);
classmy_test_modelextendsmodel{
publicfunction__construct(){
$this->db_config=pc_base::load_config("database");
$this->db_setting="default";//默认的数据库配置.//多个库的话可以在这里选库
$this->table_name="my_test";//这个就是表名称,不用加表前缀
parent::__construct();
}
}
?>
第一行的作用是确定是不是在phpcms的运行框架内.
第二行加载系统的model类,后面的参数0的意思是并不实例化.
最后一行调用了父类的构造方法.可以在phpcms/libs/classes/model.class.php中找到
而这个model类里面定义了很多对数据的操作方法 最基本的增删改查。以后我再详细说说model基本的一些方法。
接着来看看modules 里面的东东
我们一个个往下面看 第一个language 是用来支持多语言菜单的。
然后是config.ini.php,这个里面写的是一些关于模块安装时候的信息。
文件里面是这个结构的
$module="mytest";//使用的model
$modulename="这里是模块的名称";
$introduce="模块的描述信息";
$author="作者";
$authorsite="作者网站";
$authoremail="作者email";
里面标注的很清楚了
接着是extention.inc.php这个文件是用来创建后台管理菜单的目录结构的,也是用来控制权限的
$id=$menu_db->insert(array("name"=>"这里写着操作名称", "parentid"=>父ID,"m"=>"模块","c"=>"控制器","a"=>"动作", "data"=>"","listorder"=>排序,"display"=>"是否显示"),true);//最后的true是用来返回ID的
文件最后应该有一个数组,这个数组是用来插入系统的\language\zh-cn\system_menu.lang.php里面的 格式如下
$language=array(
"这里是你起的操作名称"=>"这里是操作的中文翻译",
类似:"mytest_init"=>"显示列表"
);
然后是model.php 这个就是你使用了哪些数据模型可以理解为使用了哪些表
returnarray("mytest","my_test_artcle");
然后是model.sql 这个是用来向系统的模型表里面插入数据用的
INSERTINTO`phpcms_module`(`module`,`name`,`url`,`iscore`,`version`,`description`,`setting`,`listorder`,`disabled`,`installdate`,`updatedate`)VALUES();
然后是mytest.sql建立你数据库表的语句应该写在这个文件里面
接着就是你所使用的模板 应该放在templates里面 命名的规则应该是 mytest_add.tpl.php
最后是你的控制器 这个有的研究了.控制器里面是针对你每个url传递过来的action也就是a=?的动作.默认动作是init
<?php
defined("IN_PHPCMS")orexit("Nopermissionresources.");
pc_base::load_app_class("admin","admin",0);
classmytestextendsadmin(){
publicfunction__construct(){
parent::__construct;//调用父类的构造函数
}
publicfunctioninit(){
echo"这里是默认的操作方法";
}
publicfunctionadd(){
include$this->admin_tpl("mytest_add");//使用模板的方法
}
}
控制器里面写好了 我们把上面的文件都写完了就可以安装我们的模块了。
相关文章
- php 最长回文子串
- PHP DFA算法实现敏感词过滤包 php-dfa-sensitive
- PHP错误类型
- PHP文件上传
- PHP使用MySQL数据库:最佳实践(php查询mysql数据库)
- PHP与MySQL的紧密链接(php与mysql的关系)
- PHP中如何连接MySQL数据库?(php怎么连接mysql数据库)
- 使用PHP执行Linux脚本:简单而快速!(php执行linux脚本)
- PHP应该在哪个Linux操作系统上运行?(php用什么linux)
- PHP轻松加载MySQL模块(php加载mysql模块)
- 如何使用MySQL快速查询PHP数组(mysql查询数组php)
- 如何在Linux下顺利安装PHP?(在linux下安装php)
- php无法加载mssql模块的挣扎(php没有加载mssql)
- 用PHP从MSSQL读取数据表列表(php查询mssql列表)
- Linux定时执行PHP脚本,提高效率(linux定时执行php)
- 一个关于nginx+php 的性能优化小测试
- php+dbfile开发小型留言本
- PHP学习笔记之二php入门知识
- php数据结构算法(PHP描述)简单选择排序simpleselectionsort
- Window下PHP三种运行方式图文详解
- PHP中怎样保持SESSION不过期原理及方案介绍
- php获取远程图片体积大小的实例
- PHP轻量级数据库操作类Medoo增加、删除、修改、查询例子
- php实现的支持断点续传的文件下载类