Discuzx2 开发标准流程笔记
发布时间:2012-05-21 03:05:09 作者:佚名
我要评论
研究了有一个月的discuz x2的源代码。然后有了一些开发的心得。写心得也算是一种回顾,温故而知新嘛
首先,要理解每一个根目录页面的大概的加载流程顺序。这里,我就不用根目录的标准文件了。直接举例,写一个新的模块,它的名字叫做newModule.php。
流程是这样的:
1. newModule.php首先加载核心的类文件,/source/class/clsss_core.php这个是核心的类文件,这个文件是初始化了整个dz的核心对象,用了单例模式。名字叫做$discuz,这个对象里面有几个比较重要的特点。首先,是$_G的参数,被引用到了这个对象的var属性中,也就是$discuz->var = $_G,然后在对象内用$this->var来操作$_G,在对象外面,比如独立函数中,使用$_G来操作参数;其次是这个对象里面引用了所有的其他对象,包括数据库对象和其他对象,都是用引用来获得在对象内操作的它们时的同步改变。(其实这个设计原本就比较混乱,不过可以理解,为了照顾以前的设计,纯OO的php设计是忌讳这样的,应该使用注册表或者组合模式来得更好)
2. 加载支持文件,/source/function/function_core.php文件是所有核心函数,何谓核心函数,核心函数的意思就是在核心类需要实例化的时候,它们就会被使用到。
3. 加载模块所需要的独立函数, /source/function/function_newModule.php文件,是该模块自己所需要的独立的函数,这些函数应该是从逻辑或者是业务上来说是不能被归结到某个对象或者类里面。
4. 加载模块自定义的类文件,/source/class/class_newModule.php文件,这个文件是新模块所需要用到类,这个文件可以创建自己的扩展类,特别是领域驱动,或者OO爱好者。
5. 加载模块自定义的动作文件,什么叫动作文件,就是url传值中的mod,这文件的作用是,如果提供最后这个新模块所需要的最终入口函数。
6. 加载完以上文件,那么,就可以产生了一个可以供用来使用的大块php的。所有的必须要的函数都已经准备,就等着ajax或者form的提交或者template的显示。
需要注意一点是:其实这里是一个比较标准的,遵从dz原本设计的流程,可以无缝的内签到dz中,而不会因为系统升级从来影响功能。淡然了。高手们从来都不满足的,他们一般都会脱离dz的流程。不过,破坏性怎么样?就不得而知了。需要因人而异。
我的建议是使用OO和少许的设计模式,来组织代码,理顺业务,这样扩展性较好,复用率高。当然,喜欢怎么玩,就怎么玩。开源的嘛。(其实数据库感觉设计的可以,如果是我,想必设计不出来,高手勿喷。)
流程是这样的:
1. newModule.php首先加载核心的类文件,/source/class/clsss_core.php这个是核心的类文件,这个文件是初始化了整个dz的核心对象,用了单例模式。名字叫做$discuz,这个对象里面有几个比较重要的特点。首先,是$_G的参数,被引用到了这个对象的var属性中,也就是$discuz->var = $_G,然后在对象内用$this->var来操作$_G,在对象外面,比如独立函数中,使用$_G来操作参数;其次是这个对象里面引用了所有的其他对象,包括数据库对象和其他对象,都是用引用来获得在对象内操作的它们时的同步改变。(其实这个设计原本就比较混乱,不过可以理解,为了照顾以前的设计,纯OO的php设计是忌讳这样的,应该使用注册表或者组合模式来得更好)
2. 加载支持文件,/source/function/function_core.php文件是所有核心函数,何谓核心函数,核心函数的意思就是在核心类需要实例化的时候,它们就会被使用到。
3. 加载模块所需要的独立函数, /source/function/function_newModule.php文件,是该模块自己所需要的独立的函数,这些函数应该是从逻辑或者是业务上来说是不能被归结到某个对象或者类里面。
4. 加载模块自定义的类文件,/source/class/class_newModule.php文件,这个文件是新模块所需要用到类,这个文件可以创建自己的扩展类,特别是领域驱动,或者OO爱好者。
5. 加载模块自定义的动作文件,什么叫动作文件,就是url传值中的mod,这文件的作用是,如果提供最后这个新模块所需要的最终入口函数。
6. 加载完以上文件,那么,就可以产生了一个可以供用来使用的大块php的。所有的必须要的函数都已经准备,就等着ajax或者form的提交或者template的显示。
需要注意一点是:其实这里是一个比较标准的,遵从dz原本设计的流程,可以无缝的内签到dz中,而不会因为系统升级从来影响功能。淡然了。高手们从来都不满足的,他们一般都会脱离dz的流程。不过,破坏性怎么样?就不得而知了。需要因人而异。
我的建议是使用OO和少许的设计模式,来组织代码,理顺业务,这样扩展性较好,复用率高。当然,喜欢怎么玩,就怎么玩。开源的嘛。(其实数据库感觉设计的可以,如果是我,想必设计不出来,高手勿喷。)
相关文章
- 这是我去年自己花了一个下午一点点研究出来的,现在免费贡献给大家试用,代码放入后台统计即可,效果如下2020-11-16
- 如果想要404页面跟网站其他页面一样带有顶部和底部导航,能显示用户信息怎么办呢?今天小编就为大家介绍discuz设置嵌入式404页面教程,来看看吧2016-05-10
Discuz X3/3.1 门户中的Keyword和Description显示不正确的解决方法
这篇文章主要介绍了Discuz X3/3.1 门户中的Keyword和Description显示不正确的解决方法,默认显示的是游客能看到的,而Discuz 对游客屏蔽了关键词与描述,为了SEO,还是让它正常2015-03-25- 这篇文章主要介绍了Discuz提示您安装的不是正版应用问题解决办法,完整提示“对不起,您安装的不是正版应用,安装程序无法继续执行”,本文使用修改PHP文件的方法解决了这个2015-03-25
- 这篇文章主要介绍了Discuz和jQuery变量名冲突的3种解决方法,在开发模板或者插件时经常遇到这个问题,本文列出的3种方法都可以解决这个问题,需要的朋友可以参考下2015-03-25
Discuz提示“密码错误次数过多,请15分钟后重新登陆”问题解决方法
这篇文章主要介绍了Discuz提示“密码错误次数过多,请15分钟后重新登陆”问题解决方法,本文方法适合网站管理员操作,不是普通网友可以使用的解决方法,需要的朋友可以参考下2015-03-25- 帖子数量上万,一开始是通过设置词语过滤,发现无效果,只能通过数据库批量替换了,具体方法请接着往下看2014-09-04
Discuz!X3.2版设置论坛QQ在线客服号码无法发起聊天的问题解决办法
这篇文章主要介绍了Discuz!X3.2版设置论坛QQ在线客服号码无法发起聊天的问题解决办法,需要的朋友可以参考下2014-08-03- 这篇文章主要为大家介绍了Discuz论坛发帖技巧,需要的朋友可以参考下2014-06-21
- 这篇文章主要为大家介绍了Discuz论坛宣传与优化技巧,需要的朋友可以参考下2014-06-21


最新评论