discuz php如何开发,Discuzx2开发标准流程
Discuzx2开发标准流程
PHP
#discuzx #开发 #流程2012-05-30 10:14
流程是这样的:
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和少许的设计模式,来组织代码,理顺业务,这样扩展性较好,复用率高。当然,喜欢怎么玩,就怎么玩。开源的嘛。(其实数据库感觉设计的可以,如果是我,想必设计不出来,高手勿喷。)
相关文章
discuz php如何开发,Discuzx2开发标准流程相关推荐
- 开发步骤 采用restful接口开发的开发步骤
2019独角兽企业重金招聘Python工程师标准>>> 项目是基于前后端分离的架构进行开发,前后端分离架构总体上包括前端和服务端,通常是多人协作并行开发,开发步骤如下: 1.需求分析 ...
- STM32开发 -- 蓝牙开发详解(2)
如需转载请注明出处:https://juyou.blog.csdn.net/article/details/100708695 接着 STM32开发 – 蓝牙开发详解(1) 这一篇接着讲. 看了好久好 ...
- 游戏开发需要具备哪些技术_短视频 SDK 开发 (一) 开发一款短视频 SDK 需要具备哪些知识?...
前言 2020 年要属什么最火,肯定是短视频和直播带货了.我自己基本上每天晚上睡觉之前都会刷一会儿 douyin 短视频,不得不承认 douyin 的推荐算法是真 nb ,推荐的都是我的最爱 ? .那 ...
- java 绑定微信号开发_Java开发中的常见危险信号
java 绑定微信号开发 在开发,阅读,复审和维护成千上万行Java代码的几年中,我已经习惯于看到Java代码中的某些" 危险信号 ",这些信号通常(但可能并非总是)暗示着代码有问 ...
- 中移4G模块-ML302-OpenCpu开发-串口开发
B站:https://space.bilibili.com/309103931 中移4G模块-ML302专栏:https://blog.csdn.net/qq_33259323/category_10 ...
- 简单Android app开发_app开发流程:如何简单快速进行app手机开发?
现在大家的生活已经离不开手机,手机成为最主要的生活工具,app自然也成为最大的流量入口.在流量为王的时代,app手机开发自然成为企业营销及创业赚钱的选择.app开发流程是怎么样的?如何简单快速地开发一 ...
- Spark集群 + Akka + Kafka + Scala 开发(2) : 开发一个Spark应用
前言 在Spark集群 + Akka + Kafka + Scala 开发(1) : 配置开发环境,我们已经部署好了一个Spark的开发环境. 本文的目标是写一个Spark应用,并可以在集群中测试. ...
- 【源码+图片素材】Java王者荣耀游戏开发_开发Java游戏项目【王者荣耀】1天搞定!!!腾讯游戏_Java课程设计_Java实战项目_Java初级项目
王者荣耀是当下热门手游之一,小伙伴们是否想过如何制作一款属于自己的王者荣耀游戏呢? 本课程讲解了一个王者荣耀游戏的详细编写流程,即使你是刚入门Java的新手,只要你简单掌握了该游戏所需要的JavaSE ...
- 视频教程-微信小程序开发实战之番茄时钟开发-微信开发
微信小程序开发实战之番茄时钟开发 4年web前后端开发经验,熟悉PHP,Python后端技术,熟悉基于Lnmp环境的项目开发和部署,擅长Yii,ThinkPHP,CI,Django,Flask等国内外 ...
最新文章
- MPB:邓晔、王尚等-​环境样本中的细菌总量测定—流式细胞法
- XPE一般性组件整理
- secure使用vi编辑远程机器文件出现4;m
- Exynos4412裸机开发 —— A/D转换器
- Android导航栏ActionBar的具体分析
- 5G套餐月资费感受下:最低325元 仅提供8GB数据流量
- java bufferedwriter会自动创建文件吗_Java中为什么会有包装类?自动拆装箱必要吗?关于Wrapping Class这是重点!...
- Go基础系列:接口类型断言和type-switch
- 将python文件转换exe可执行程序
- BarTender制作圆形标签的方法
- 16张图详解计算机网络协议(万字)
- gbd调试器及静态库/动态库的制作
- Information Communication Technology,简称ICT
- matlab命令行窗口显示长度设置_设置命令行窗口输出显示格式 | MATLAB format| MathWork...
- 一文搞懂 Web Worker(原理到实践)
- 在macOS上使用LaTeX
- 【LINQ技术】扩展特性和LINQ操作符
- 这是一个浮躁的时代(程序员)
- VBS判断excel版本
- lodash和Underscore介绍
热门文章
- Fiddler抓包工具详解(五)(IOS、安卓抓包+fildder插件)
- React DnD简明教程
- npm运行报错:Error: ENOSPC: System limit for number of file watchers reached
- 在Centos下安装Typora
- ubuntu deepin等debian系Linux发行版安装docker-ce命令
- Geospark从Shapefile中加载RDD
- Linux 光盘的挂载和解挂
- MyBatis在insert插入操作时返回主键ID
- 图片日志:泛型的作用/hashset的内部实现/常见运行期异常
- JDBC连接mysql、创建表、操作数据、PreparedStatement防注入、sql语句返回值类型知识汇总