UCHOME 代码浅析(2) 系统架构解析

UCHOME 代码浅析(2) 系统架构解析(6-5 13:00已更新)

首先废话两句:
UCHOME 是一个不是很复杂的SNS程序,但具有SNS的基本功能,加上MANYOU平台上的许多应用,可以说是国内最NB的开源SNS程序。并且,在整个PHP开源领域,UCHO​ME是被二次开发最多的程序。为什么呢?
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去了。。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值