- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
新浪xweibo代码架构分析与二次开发.docx
新浪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.另一种是请求通过路由层,进入控制器,调用控制器的相关方法获取数据,显示相关的模板(VIEW)。以微博广场为例:http://apptest/xweibo_upload/index.php?m=pub则会进入pub.mod.php,当没有指定action时候默认调用控制器的default_action(),获取数据并包含相应模板页。微博广场上的随便看看标签url,http://apptest/xweibo_upload/index.php?m=pub.look该url指定了pub控制器的,其action为look.调用pub.mod.php的look方法,获取数据,包含相应模板。
控制器|钩子
对于控制器的每一个方法,在执行前和执行后会执行钩子函数。即调用方法前执行 _before_方法名(),在调用方法后执行“_after_方法名( )” 函数。例如在pub.mod.php的look方法前,会执行_before_look()方法,执行完look方法后,会再执行一个 _after_look()。提供钩子方法的好处是:当需要时候可以对数据做预处理或者当函数执行完后,根据已经获取的数据选择性的执行相应操作。TIPS:可能存在疑问是,那无论预处理或者调用后处理都可以在函数里执行或者加判断,为什么用钩子?我的理解是,有些方法会被其他方法或者其他类显式的调用,如果在方法中增加额外代码会影响使用该方法的其他类,使用钩子方法,可以只在用户请求控制层的时候执行相应的钩子操作,钩子调用可以在cfg.php中关闭。
模板(view)
在templates/default目录下的所有*.tpl.php文件都是模板文件。
xweibo controller层与VIEW层,在任务分配上界限不明显。这体现在VIEW层也可以调用model层的操作获取、组织、过滤相应数据,当然获取完数据后需要对获取的数据进行显示,使用html+php混合的写法。TIPSXWEIBO没有使用模板引擎很大原因,是因为它想让数据组织和显示更自由化,从哪获取,显示什么样子在一个模板文件里可以更改,一个模板文件可以被其他 文件包含,
您可能关注的文档
- 教育综合考纲知识点总复习.doc
- 教育部参__《形状补间动画》__杨梅香.doc
- 教育部参赛_Unit 4 My Home单元复习教学设计_邹燕.doc
- 教育部参赛_《做生活的强者》_吴文静.doc
- 教育部参赛_改革发展中的教育_徐成海.doc
- 数学与科学论文.doc
- 数学几种课型的问题设计.doc
- 数学教学模式和教学方法.doc
- 数学教学运用网络教学模式的实践探索.doc
- 数学教师与数学教学研究.doc
- 2025年超星尔雅学习通《劳动通论》章节测试及参考答案【能力提升】.docx
- 2025年社区工作者考试试题库附答案(精练).docx
- 2025年法律常识题库word.docx
- 2025年计算机知识题库含大题及参考答案【综合题】.docx
- 2025年计算机知识题库含大题附参考答案ab卷.docx
- 2025年法律常识题库带答案(培优b卷).docx
- 2025年国家电网招聘之经济学类考试题库附参考答案【达标题】.docx
- 2025年注册消防工程师之消防安全技术实务题库及参考答案(培优).docx
- 2025年中国聚四氟乙烯不粘涂料项目投资可行性研究报告.docx
- 2025至2030年中国大屏幕手机行业市场竞争格局分析及投资方向研究报告.docx
文档评论(0)