博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP学习笔记(11)初探PHPcms模块开发
阅读量:4599 次
发布时间:2019-06-09

本文共 2588 字,大约阅读时间需要 8 分钟。

由于工作关系,只能暂时放弃对mongodb的研究了 .开始研究PHPcms .

目前为止我已经基本完成了模块的开发.趁着周末来这里做个总结.我发现phpcms写的还不错,不过文档什么的确实不多.

不说废话了.对于phpcms的模块开发.首先要了解模块的目录结构.

我们可以在

找到他的目录结构   我们要开发的东东(也就是模块)就在/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文件夹下面写的那个文件.

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  这个就是你使用了哪些数据模型 可以理解为使用了哪些表

return array('mytest','my_test_artcle');

然后是model.sql   这个是用来向系统的模型表里面插入数据用的

INSERT INTO `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 

admin_tpl('mytest_add');//使用模板的方法  }}

控制器里面写好了   我们把上面的文件都写完了就可以安装我们的模块了 。

写这个博客的时候我已经基本完成了我的模块的开发。回头还有很多东西要写上来。这次过程收获了不少。这个博客是我刚刚开始这个项目的时候打的草稿。

 

转载于:https://www.cnblogs.com/swordphp/archive/2012/12/21/2818533.html

你可能感兴趣的文章
mac os x mysql 出现./mysql: unknown variable 'sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABL 问题...
查看>>
桐桐的贸易--WA
查看>>
历届试题 高僧斗法
查看>>
linux命令系列 stat & touch
查看>>
[Tools] Webstorm Github的配置与使用
查看>>
鬼谷子绝学
查看>>
Mongodb 笔记04 特殊索引和集合、聚合、应用程序设计
查看>>
使用Post/Redirect/Get实现Asp.net防止表单重复提交
查看>>
用Html5与Asp.net MVC上传多个文件
查看>>
lambda函数,常用函数,内置函数(string,zip()map()filter())的用法
查看>>
Xcode中匹配的配置包的存放目录
查看>>
JavaScript将具有父子关系的原始数据格式化成树形结构数据(id,pid)
查看>>
CSS3.0——背景属性
查看>>
【转载】C语言中的undefined behavior/unspecified behavior - 序
查看>>
MySQL服务使用
查看>>
C语言练手自己编写学生成绩管理系统
查看>>
20175204 张湲祯 2018-2019-2《Java程序设计》第二周学习总结
查看>>
NCPC 2015 - Problem A - Adjoin the Networks
查看>>
How to lisp Lisp output a paragraph"500 Tph Dry Process Cement Plant Machinery Manufacturers"
查看>>
更改chrome浏览器css背景为护眼色,更改字体为微软雅黑。
查看>>