设为首页 收藏本站
查看: 916|回复: 0

[经验分享] PHP学习笔记(11)初探PHPcms模块开发

[复制链接]
累计签到:5 天
连续签到:1 天
发表于 2015-8-23 12:06:23 | 显示全部楼层 |阅读模式
  由于工作关系,只能暂时放弃对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') or exit('No permission resources.');
pc_base::load_sys_class('model', '', 0);
class my_test_model extends model {
public function __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  这个就是你使用了哪些数据模型 可以理解为使用了哪些表



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



<?php
defined('IN_PHPCMS') or exit('No permission resources.');
pc_base::load_app_class('admin','admin',0);
class mytest extends admin(){
  public function __construct(){
    parent::__construct;//调用父类的构造函数
  }
  public function init(){
    echo "这里是默认的操作方法";
  }
  public function add(){
    include $this->admin_tpl('mytest_add');//使用模板的方法
  }
}
  控制器里面写好了   我们把上面的文件都写完了就可以安装我们的模块了 。
  写这个博客的时候我已经基本完成了我的模块的开发。回头还有很多东西要写上来。这次过程收获了不少。这个博客是我刚刚开始这个项目的时候打的草稿。
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-102949-1-1.html 上篇帖子: PHP json_encode中文乱码解决方法 下篇帖子: 分析和解析PHP代码的7大工具
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表