DiscuzX2.5 程序底层架构

程序底层架构

• 要求PHP版本大于5.1,抛弃了对PHP4的支持

• 大量使用了面向对象编程(OOP)

• 实现了程序运程过程中按需加载,按需加载主要是针对类文件

• 对目录名、文件名和类名的要求

类文件存在在/source/class 目录中,类名和文件名相同,一个类一个文件,类名以下划线(_)分隔,第一个下划线之前部分为目录名,没有下划线的类名直接放/source/class/目录下。

产品中个别特殊类由于历史原因无法实现自动加载,需手动处理 include或require

• class_core.php 流程控制的说明

class_core.php是入口启动文件,主要实现了以下功能:

1、注册autoload方法和异常处理方法;

2、C::t方法的实现;

3、memory的初始化;

4、创建discuz_application实例(discuz_application是原来discuz! X2的discuz_core);

// 现在的 discuz_core 是个空壳子而已
class discuz_core extends discuz_application {

}

5、简写类的映射:

class C extends core {}

class DB extends discuz_database {}

• function_core.php 减肥之术

function_core.php是系统的核心函数库文件,随着系统功能的丰富,函数库越来越大,慢慢地变成了系统快速启动的负担,为此我们将function_core中的函数按功能拆分到不同的类文件中,实现程序的按需加载; 原有函数名保留不变,做相应类静态方法的映射,兼容产品和插件的用法。

具体做法是在source/class目录增加两个目录,helper和lib,source/class/helper目录中的文件为函数的分类集合,类的静态方法,可直接使用不用实例化, source/class/lib目录中的文件为工具类的集合类文件,使用时需实例化。

时间: 2024-07-29 20:15:52

DiscuzX2.5 程序底层架构的相关文章

XMPP协议实现即时通讯底层书写 (三) IOS XMPPFramework --IM底层架构设计+技术准备工作

最近发生了一些不是很愉快的事情,导致断更很长一段时间,很抱歉."不要炫技,理解原理,对自己的代码负责,才能对团队和项目负责"--郭前辈在群里说过的语录,让我很是欢喜和受教.鄙人写第一次写blog是在2011年,那时候写技术blog的初衷是为了写日记:今天我学到了什么知识,技术,记录自己程序猿的成长点滴.随着技术的积累,写blog为了分享:傻逼,如果你也碰到这种问题,这是我的解决方案,看了这些XXX处理好的,可以"抄"这份60分的答案来解决问题.到现在这阶段,写blo

PHP底层架构和运行流程

PHP底层架构自底向上是一个四层体系: 1.Zend引擎:Zend整体用纯C实现,是PHP的内核部分,他将PHP代码翻译(词法.语法解析等一系列编译过程)为可执行opcode的处理并实现相应的处理方法.实现了基本的数据结构(如:hashtable.OO).内存分配机制及管理.提供了相应的api方法供外部调用,是一切的核心,所有的外围功能均围绕Zend实现. 2.Extensions:围绕着Zend引擎,extensions通过组件式的方式提供各种基础服务,我们常见的各种内置函数(array系列)

Swing程序最佳架构设计—以业务对象为中心的MVC模式(转)

前言: 我打算写一系列关于Swing程序开发的文章.这是由于最近我在做一个Swing产品的开发.长期做JavaEE程序,让我有些麻木了.Swing是设计模式的典范,是一件优雅的艺术品,是一件超越时代的产品! 有机会作Swing软件的开发,让我非常有感觉! 呵呵,希望有机会能够用Java3D编写软件,那种感觉一定更棒! Java和Swing都是杰作.我这个人对别人一向很挑剔的,能够得到我由衷地赞誉,可想而知它们有多优秀了.奇怪的是,它们居然一直都无法占领桌面市场.有人说这是技术的原因.我认为这应该

Python程序基本架构

算数运算(变量赋值) 函数运算(输入语句) >>> str1 = raw_input("plz input a String:")//接收键盘输入 plz input a String:www.bling.com >>> print(str1) www.bling.com >>> n = len(str1)//函数 >>> print(n) 13 Python程序基本架构,布布扣,bubuko.com

Python 程序基本架构

Python的一般程序基本架构为:输入,处理,输出,这三块. 输入:包括两个内容,变量赋值与输入语句 处理:包括算术运算,逻辑运算,算法处理这三方面 输出:包括打印输出,写入文件,写入数据库这三块 下面举两个例子具体了解一下Python的程序基本架构 1 输入:变量赋值 处理:算术运算 输出:打印输出  x = 12  #变量赋值x=12  y = 13  #变量赋值y=13  z = x + y   #算术运算  print(z)   #打印输出    25 2 输入:输入语句 处理:算法处理

seci-log 1.13 发布 简化了安装和程序底层结构做了调整

日志分析软件 seci-log 1.13发布,简化了安装和程序底层结构做了调整.上篇文章1.12,有兴趣可以了解一下.本次升级合并了linux和windows版本.这两个版本都为绿色版本(需要提前安装java 1.7版本),放到任意目录下都可以,如果正式使用建议放到磁盘空间大的磁盘中. 本次升级简化了安装,只依赖java 1.7,日志数据只存储到es中,去掉了mysql数据库,这样就不用安装mysql了,同时得到另外的一个有优势数据占用空间减少了一半多,因为同样一条记录,mysql存储空间要大于

浅析微信小程序技术架构(原创)

周末万里虎抽空体验了下微信小程序的DEMO,对小程序的开发有了一个基础的了解与认识,今天就来和大家分享一下我对小程序的看法. 从官方DEMO来看,小程序在技术架构上非常清晰易懂.JS负责业务逻辑的实现,而表现层则WXML和WXSS来共同实现,前者其实就是一种微信定义的模板语言,而后者类似CSS.所以对于擅长前端开发,或者WEB开发的广大开发者而已,小程序的开发可谓降低了不少门槛. 从上面的微信小程序架构图上可以清晰的看出,小程序借助的是JSBridge实现了对底层API接口的调用,所以在小程序里

从内存使用的角度来理解.Net底层架构

.NET的很多概念如果总是从语法的角度或许你永远都不会理解到底为什么他会这么架构,但是如果你换个角度或许这些都会迎刃而解.从底层理解.NET的架构你就离高手更近一步了.本文只是从个人角度来瞅一眼为什么.NET的架构,若有不对的地方,还请各位指正.OK, here we go. C/C++等程序如何使用内存 技术毕竟是一个逐渐积累进步的过程,.NET的推出不乏抄袭其他语言的地方,但是他有自己独特的地方,至于为什么会独特肯定会有语言的过人之处.  1.预备知识 C/C++编译的程序占用的内存分为以下

Docker技术底层架构剖析

[Docker  底层技术] docker底层的 2 个核心技术分别是 Namespaces 和 Control groups 在操作系统中,网络配置,进程,用户,IPC(进程之间的调用)等信息之间的操作,都是可以被所有进程查看到的,除了这些资源信息,我们还需要隔离进程之间能够共享的信息,而Namespaces用于实现进程之间信息隔离的 关于Linux命名空间,实现进程间信息的独立与隔离需要在操作系统内核层面进行实现的 Mount Namespaces:挂载命名空间,用于隔离挂载目录 为什么要通