UCHOME 代码浅析(2) 系统架构解析
2011-02-16 10:16
232 查看
UCHOME 代码浅析(2) 系统架构解析(6-5 13:00已更新)
首先废话两句:
UCHOME 是一个不是很复杂的SNS程序,但具有SNS的基本功能,加上MANYOU平台上的许多应用,可以说是国内最NB的开源SNS程序。并且,在整个PHP开源领域,UCHOME是被二次开发最多的程序。为什么呢?
1.符合市场需求。随着前两年FACEBOOK的风靡全球,SNS越来越深入人们的生活,人们乐于在SNS与朋友联系,还能通过SNS找到更多的人。正所
谓有需求就有市场,校内(人人)赶上了第一波热潮,获得巨大成功;开心网(kaixin001.com)则是后生可畏,也占领了不少份额。更多的站长也
想从中分得一点利益。
2.结构简单,功能强大,二次开发容易,而且基于discuz的站长用户群,有庞大的支持队伍,uchome很容易就推广开来了。
下面就讲解UCHOME的系统架构。
<!--more-->
1.文件、目录方面
/admin 后台管理(包含了程序、模板)
/api 接口目录
/attachment 附件目录,用于存放用户上传的图片等。
/data 系统缓存目录(包含系统设置缓存、模块缓存、模板缓存、日志、系统安装锁、用户组缓存等等)
/image 系统图片(表情、等级标识等等公用图片)
/install 系统安装目录
/language 系统语言包目录
* /source 程序目录(重要,所有UCHOME的操作都是由这里面的PHP文件做的。这个会在下面程序架构讲到)
/template 很常见的命名,模板目录,该目录下的每一个文件夹是一个模板
/theme 用户个人主页模板目录
/uc_client UC客户端。和UC通信它是核心。
admincp.php 管理页面入口
app.php 漫游应用
common.php 核心,上一篇文章有讲解
config.php 配置文件
cp.php 用户操作入口(添加日志、上传图片等等,所有用户的执行的某个动作都在这个文件)
crossdomain.xml 用户FLASH的配置文件。貌似是为跨域。
do.php 登录、退出、注册页面
editor.php 编辑器(有多种类型)
help.php 帮助信息文件
index.php 首页
invite.php 邀请页面(用于用于邀请好友注册等)
js.php JS模块调用文件(没用过
)
link.php 用于外部连接。当从UCHOME点击外部链接时,顶部会出现我们空间的工具条,可以方便的返回我们的页面。
magic.php 道具文件
network.php 随便看看
rss.php RSS订阅输出页面
space.php 用户查看入口(查看日志、图片、文章等入口)。
userapp.php 暂时不清楚,但是漫游的东西。
ver.php 就是一个版本号。用于检查更新。当管理员到后台时,系统会把VER.PHP里的版本跟官方最新的比较,有最新版本就提示。
xmlrpc.php 具体不知道做什么的。
以上就是UCHOME的文件/目录架构。
----------------先睡觉了,明天继续。
2.程序架构。
让我们一步一步来解析UCHOME的程序架构。
首先,UCHOME具有基本的MVC模式(什么是MVC?google!),但不是很规范的。1.一般MVC是单入口,而UCHOME把用户操作
(cp.php)和用户浏览(space.php)和登录等(do.php)分开了,所以成为了多入口。2.UCHOME的contrllor和
model区分得不是很明显,是在同一个文件里,直接写的代码,而不像其他的MVC系统是单独分开的。
下面以space.php为例子,来讲讲UCHOME的具体流程。
在uchome中,所有浏览的页面都是由space.php产生的。它相当于一个指路者,根据浏览者请求的地址,把浏览者带到对应的房间去。比
如,uchome里日志的页面是space.php?do=blog。那么space.php在做完验证后(比如登录啊什么的),会包含一个
source/space_blog.php,这个文件就是日志的模块文件了,日志功能的所有浏览都在这个文件里。
而用户操作页面cp.php跟space.php,差不多,它的请求方法是cp.php?ac=模块名。
现在做个试验,在/source/目录下,新建一个php文件,命名为space_solo.php。内容为echo '
';
然后在space.php里第31行左右,给$dos数组增加一个值,值为solo。
然后访问space.php?do=solo。看到
了吧?这就是简单的增加了一个模块。由于没有包含模板文件,所以只看到一个简单的语句。在下面我会讲解怎么添加一个完整的模块。
以上就是UCHOME程序的简单流程,下面就以代码来具体讲解。
------------------------华丽的分隔线---------------------------------
include_once('./common.php');
include_once(S_ROOT.'./data/data_magic.php');
这两句不用解释了,就是包含需要的文件。common.php是核心,uchome所以文件都需要包含它(这个文件在前几篇文章有详细分析)。data_magic.php是道具需要的。
接下来是一个函数:
checkclose();
该函数没什么讲的。就是检查站点是否关闭和IP是否被禁止访问。
接下来是一段处理url带rewrite参赛的代码(什么是rewrite?google),不解释。
然后到了30行。$dos = array('feed', 'doing', 'mood',---); 这是定义了允许访问的模块。在下面38行有这样的判断语句:
$do = (!empty($_GET['do']) && in_array($_GET['do'], $dos))?$_GET['do']:'index';
意思就是请求的模块不在$dos里,就默认给它index模块。比如,blog是日志,如果这个数组里没有blog,那么将访问不到blog模块,而是跑到index去了。。
首先废话两句:
UCHOME 是一个不是很复杂的SNS程序,但具有SNS的基本功能,加上MANYOU平台上的许多应用,可以说是国内最NB的开源SNS程序。并且,在整个PHP开源领域,UCHOME是被二次开发最多的程序。为什么呢?
1.符合市场需求。随着前两年FACEBOOK的风靡全球,SNS越来越深入人们的生活,人们乐于在SNS与朋友联系,还能通过SNS找到更多的人。正所
谓有需求就有市场,校内(人人)赶上了第一波热潮,获得巨大成功;开心网(kaixin001.com)则是后生可畏,也占领了不少份额。更多的站长也
想从中分得一点利益。
2.结构简单,功能强大,二次开发容易,而且基于discuz的站长用户群,有庞大的支持队伍,uchome很容易就推广开来了。
下面就讲解UCHOME的系统架构。
<!--more-->
1.文件、目录方面
/admin 后台管理(包含了程序、模板)
/api 接口目录
/attachment 附件目录,用于存放用户上传的图片等。
/data 系统缓存目录(包含系统设置缓存、模块缓存、模板缓存、日志、系统安装锁、用户组缓存等等)
/image 系统图片(表情、等级标识等等公用图片)
/install 系统安装目录
/language 系统语言包目录
* /source 程序目录(重要,所有UCHOME的操作都是由这里面的PHP文件做的。这个会在下面程序架构讲到)
/template 很常见的命名,模板目录,该目录下的每一个文件夹是一个模板
/theme 用户个人主页模板目录
/uc_client UC客户端。和UC通信它是核心。
admincp.php 管理页面入口
app.php 漫游应用
common.php 核心,上一篇文章有讲解
config.php 配置文件
cp.php 用户操作入口(添加日志、上传图片等等,所有用户的执行的某个动作都在这个文件)
crossdomain.xml 用户FLASH的配置文件。貌似是为跨域。
do.php 登录、退出、注册页面
editor.php 编辑器(有多种类型)
help.php 帮助信息文件
index.php 首页
invite.php 邀请页面(用于用于邀请好友注册等)
js.php JS模块调用文件(没用过
)
link.php 用于外部连接。当从UCHOME点击外部链接时,顶部会出现我们空间的工具条,可以方便的返回我们的页面。
magic.php 道具文件
network.php 随便看看
rss.php RSS订阅输出页面
space.php 用户查看入口(查看日志、图片、文章等入口)。
userapp.php 暂时不清楚,但是漫游的东西。
ver.php 就是一个版本号。用于检查更新。当管理员到后台时,系统会把VER.PHP里的版本跟官方最新的比较,有最新版本就提示。
xmlrpc.php 具体不知道做什么的。
以上就是UCHOME的文件/目录架构。
----------------先睡觉了,明天继续。
2.程序架构。
让我们一步一步来解析UCHOME的程序架构。
首先,UCHOME具有基本的MVC模式(什么是MVC?google!),但不是很规范的。1.一般MVC是单入口,而UCHOME把用户操作
(cp.php)和用户浏览(space.php)和登录等(do.php)分开了,所以成为了多入口。2.UCHOME的contrllor和
model区分得不是很明显,是在同一个文件里,直接写的代码,而不像其他的MVC系统是单独分开的。
下面以space.php为例子,来讲讲UCHOME的具体流程。
在uchome中,所有浏览的页面都是由space.php产生的。它相当于一个指路者,根据浏览者请求的地址,把浏览者带到对应的房间去。比
如,uchome里日志的页面是space.php?do=blog。那么space.php在做完验证后(比如登录啊什么的),会包含一个
source/space_blog.php,这个文件就是日志的模块文件了,日志功能的所有浏览都在这个文件里。
而用户操作页面cp.php跟space.php,差不多,它的请求方法是cp.php?ac=模块名。
现在做个试验,在/source/目录下,新建一个php文件,命名为space_solo.php。内容为echo '
';
然后在space.php里第31行左右,给$dos数组增加一个值,值为solo。
然后访问space.php?do=solo。看到
了吧?这就是简单的增加了一个模块。由于没有包含模板文件,所以只看到一个简单的语句。在下面我会讲解怎么添加一个完整的模块。
以上就是UCHOME程序的简单流程,下面就以代码来具体讲解。
------------------------华丽的分隔线---------------------------------
include_once('./common.php');
include_once(S_ROOT.'./data/data_magic.php');
这两句不用解释了,就是包含需要的文件。common.php是核心,uchome所以文件都需要包含它(这个文件在前几篇文章有详细分析)。data_magic.php是道具需要的。
接下来是一个函数:
checkclose();
该函数没什么讲的。就是检查站点是否关闭和IP是否被禁止访问。
接下来是一段处理url带rewrite参赛的代码(什么是rewrite?google),不解释。
然后到了30行。$dos = array('feed', 'doing', 'mood',---); 这是定义了允许访问的模块。在下面38行有这样的判断语句:
$do = (!empty($_GET['do']) && in_array($_GET['do'], $dos))?$_GET['do']:'index';
意思就是请求的模块不在$dos里,就默认给它index模块。比如,blog是日志,如果这个数组里没有blog,那么将访问不到blog模块,而是跑到index去了。。
相关文章推荐
- Google工程师解析Android系统架构
- D_D系统构建-MBR(7)加载loader文件代码filesystem.inc解析
- .NET/ASP.NET Routing路由(深入解析路由系统架构原理)
- 【多图】Google工程师解析Android系统架构
- 解析apk部署到linux系统上(代码如果有需要请留邮箱)
- 明源售楼系统技术解析 架构搭建(一)
- 浅析BSD起源、差异、系统架构
- ADROID 2.1 架构解析 12 图形系统 1 Pixelflinger
- 浅析HBase架构和系统结构介绍(四)
- Google工程师解析Android系统架构
- AgileEAS.NET SOA 中间件平台.Net Socket通信框架-完整应用例子-在线聊天室系统-代码解析
- Android系统架构的详细解析
- (六)Tomcat源码解析 - Tomcat 系统架构与设计模式(二)-设计模式分析
- 【《深入解析Java Web技术内幕》学习思维导图】第11章 Tomcat的系统架构与设计模式
- 分布式系统 (大规模分布式系统原理解析和架构实践)
- 代码解析深度学习系统编程模型:TensorFlow vs. CNTK
- NET/ASP.NET Routing路由(深入解析路由系统架构原理)(转载)
- 最全最强解析:支付宝钱包系统架构内部剖析(架构图)
- 由一段代码解析系统调用的原理
- MVC北京络捷斯特第三方物流系统技术解析(一)MVC架构搭建