客服QQ:8814026

本站模板源码最低300元起 一口价! 不砍价哦亲!

承接织梦 帝国 phpcms仿站业务 价格最低1000起!

工作时间:周一至周五:8:00-18:00 周六、日:10:00-17:00
快云服务器稳定、安全、弹性、可靠高性能,弹性配置供您选择 快云vps站库分离更快速,免费试用,7天无理由退款 快云数据库 多重备份 读写分离 可用性高达99.99% VPS云服务器 VPS云服务器
  • 1
  • 2
  • 3
  • 4
  • 5

phpcms二次开发

您的位置:首页 > phpcms > phpcms二次开发

phpcms v9二次开发(基础篇)1:前台控制器

作者::景团网络 来源:http://www.lijingtuan.com 时间:2014-07-08 05:50:54点击:

本人资深菜鸟一枚,虽然阿Q老师一再说“二次开发”很简单,不过对我来说简直是遥不可及的梦想——只能仰望啊。眼看大山在前,我是灰心丧气还是应该奋发图强呢?纠结啊~今天终于鼓起勇气,来探一探这“二次开发”的水深水浅,一边学一边写上笔记,以供自己忘了可以反复再看,因为也是刚接触,如果过程中有错误之处,欢迎来站长圈批评指教,群号 42777579。

学的过程中我总结了一下,有几个很重要的方法是一定要学并且最好要很熟悉使用的:
load_config($file, $key = '', $default = '', $reload = false)// 加载配置文件
load_sys_class($classname, $path = '', $initialize = 1)// 加载系统类方法
load_sys_func($func)// 加载系统的函数库
load_app_class($classname, $m = '', $initialize = 1)// 加载应用类方法
load_model($classname)// 加载数据模型
以上5个方法都在phpcms/base.php基础文件里,感兴趣的可以看看它的使用方法,可见base.php这个文件的重要性。
template($module = 'content', $template = 'index', $style = '')// 模板调用
这个函数在phpcms/libs/functions/global.func.php里。
admin_tpl($file, $m = '')// 加载后台模板
这个方法在在phpcms/modules/admin/classes/admin.class.php里

首先,可以去phpcmsv9的官网看它的帮助文档,地址是http://v9.help.phpcms.cn/html/dev/,看一下二次开发的入门基础、结构设计、配置、构建模块,虽然它已经写的很详细了,不过对菜鸟还是不容易理解,所以我还是以我菜鸟的眼光和角度说一些我的理解吧。

 
URL访问
先看一下访问我们网站的几个地址吧
http://wwwquan95.com/(首页)
http://wwwquan95.com/index.php?m=content&c=index&a=lists&catid=6(列表页)
http://wwwquan95.com/index.php?m=content&c=index&a=show&catid=6&id=1(内容页)
用最长的一个网址来分析一下,一个网址可以分几段看,首先是域名http://wwwquan95.com/,后面跟着index.php,然后是?m=content&c=index&a=show,最后是&catid=6&id=1
 
1 http://wwwquan95.com/是我的域名,它相当于http://wwwquan95.com/index.php。为什么访问我们网站的任何一个页面都有index.php呢?因为phpcms v9是采用单一入口模式进行项目部署和访问,无论访问任何一个模块或者功能,只有一个统一的入口。这个入口就是根目录下面的index.php文件,打开这个文件看,里面只有简单的3行代码,可是却是整个网站最重要的入口,也是唯一的入口,它做了3件事情:
1.定义了PHPCMS根目录'PHPCMS_PATH'
2.包含了/phpcms/base.php这个基础文件,马上用到了步骤1里定义的根目录
3.调用了pc_base::creat_app();也就是步骤2里的base.php里pc_base类里的一个静态方法creat_app(),它的作用是初始化应用程序(return self::load_sys_class('application');在这个应用程序里它又调用的是系统类库里的application方法,这个方法位于phpcms/libs/classes/application.class.php里,关于调用方法的使用,以后会说到。
所以,虽然看着很简单的一个入口文件,其实包含了无限多的东西。
 
2.那么网址index.php后面跟着的?m=content&c=index&a=show又是什么呢?“m”是模块,“c”是控制器,“a”是事件、方法。这就要说到一个设计模式——MVC,也就是模型-视图-控制器 (MVC),MVC强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型(M)视图(V)控制器(C),它们各自处理自己的任务。这些在帮助文档上都写的很详细,不过小菜鸟完全看不懂哎,那就用比较易懂的方法学一下,看看能不能让自己多理解一点点。

首先,phpcms/modules这里的modules文件夹就是模型文件夹,这个文件夹下面有很多文件夹,每一个文件夹可以看做是一个模型,比如比较眼熟的content文件夹(内容),还有admin(后台)、link(友情链接)、mood(心情)、member(用户)、special(专题)等等。既然一个文件夹就是一个模块,那我现在建一个自己的模块,在modules文件夹里面建一个quan的文件夹,这就是走出二次开发的第一步了,哈哈~

/
这就是网址里的“m”了,所以如果这时候你要访问的地址就是
http://wwwquan95.com/index.php?m=quan

但是不急着访问,因为要访问的页面还没有呢,你只是在去的路上而已。那么“c”在哪里呢?c就是控制器,控制器其实就是这个模块下面的一个php文件,如我们在这个文件夹下面建一个文件index.php,这就是一个控制器。这里要注意的地方是命名规则的问题,首先它必须是一个php文件,你建什么名字是无所谓,可是这个类文件里必须有个同名的类,比如index.php文件里必须有一个index类,如果你的控制器类文件叫mytest.php,那么它里面也必须有个mytest类。(控制器类默认继承系统的函数库,可以直接使用。这个以后介绍)。现在我就建一个index类:

defined('IN_PHPCMS') or exit('No permission resources.');
class index{
    public function init(){
        echo "第一次接触二次开发,测试模块和控制器,一定要成功哦!";
    }
}
?>
解析:defined('IN_PHPCMS') or exit('No permission resources.');意思是确认你有没有定义IN_PHPCMS这个常量,这个常量是在base.php的第一句定义的,也就是说你一定要有唯一入口的通行证才能继续下面的操作,也就是如果要访问这个文件,网址里必须有index.php,因为这个入口文件包含了base.php这个基础文件,不然就会退出程序并提示“没有许可的资源”。

后面就是一个和类文件同名的类index,里面有一个简单的方法init,现在我要访问这个页面的网址就呼之欲出了,域名/index.php?m=模块名&c=控制器名&a=方法名,也就是http://wwwquan95.com/index.php?m=quan&c=index&a=init,终于访问成功,踏出了二次开发的第一步了,噢耶!

这里再重复

------分隔线----------------------------
------分隔线----------------------------
模板分类
赞助商
推荐内容
热点内容
投票调查
    你想要什么样的模板?
     女性时尚
     婚纱摄影
     学校幼儿园
     医院模板
     健康养生
     新闻资讯
     公司企业
     美女图片
     商城购物
     地方门户
赞助商

商业模板

更多