新浪xweibo 代码架构分析与二次开发 框架概要与特色 xweibo 使用MVC 结构,但VC 层任务分离不明显,V 层也完成部分C 层的任务(调用model 层获取数据)。 没有使用smarty 模板类,视图采用组件的形式,可以任意拼装,可以方便模板模块的复用,可以通过后台修改显示细节。 core 文件作为所有调用的入口,使用的所有类,函数,适配器,都是用core 提供的函数和类进行调用,便于集中控制。 对于 sina open API 调用有统一错误处理,通过 core 层提供的数据交互组件,集中对数据进行缓存,过滤,格式化等操作。 框架整体流程图 如图所示 1 请求到达后首先进入预处理模块。 2->3->4 预处理调用控制器层的类中的函数对 xweibo全局数据进行设置(如session)。 5->6->7 应用初始化,如模板皮肤,应用安装位置,log位置格式,ip过滤等操作,并调用 model层,设置用户的相关信息。 8->9 路由层,将用户请求交给相应的控制器 (controller)进行处理。 10->11->12->13 控制器调用 open api获取相关数据。 14->15->16->17 控制器缓存相关数据或者获取缓存的相关信息 ,或者站点数据库内定制的信息(结果显示数量等)。 18 控制器包含相关模板(view)进行显示。 19->20->21->22 每个模板(view)包含自己需要显示的组件(子 view),每个组件调用 model层获取自己所需的数据,进行显示。 xweibo 介绍各个子功能和模块 预处理模块 用户请求进入后,可以指定加载预处理模块,这些预处理模块就是执行一些controller中的成员函数,比如初始化站点信息,比如检验用户是否登录。加载预处理模块时可以指定哪些请求跳过预处理模块,比如登录请求就不需要加载登录校验模块。 初始化操作 初始化操作,初始化工作包括如下: 1.应用配置:log日志格式,获取程序的安装位置,是否来自 ajax请求,等等。 2.访问控制检测,过滤预定义的ip或请求路由(不允许直接请求的controller) 3.初始化模板皮肤 4.执行用户定义的预处理模块 路由层 路由层,根据路由配置获取请求参数中相应的变量,加载相应的php文件,实例化相应的类,并将请求其他参数传入,如果访问地址无效,执行function中的error404函数。 控制器 在项目 controllers目录下的所有文件为 xweibo的控制器代码。 XWEIBO中的控制器按功能分为两种,一种是作为预加载模块,在初始化过程中调用,如account.mod.php.另一种是请求通过路由层,进入控制器...