新浪xweibo代码架构分析与二次开发.docxVIP

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 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混合的写法。 TIPS XWEIBO没有使用模板引擎很大原因,是因为它想让数据组织和显示更自由化,从哪获取,显示什么样子在一个模板文件里可以更改,一个模板文件可以被其他 文件包含,

文档评论(0)

hkfgmny + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档