Drupal工作原理解析..docx

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Drupal工作原理解析.

Drupal的编程艺术可谓绝佳,初涉内涵,感受颇多。drupal虽不是面向对象编写,但胜于面向对象,完美的实现了面向对象的各种思想。继承,多态实现的淋漓尽致,这就是开源的好处,集众人之长,把编程做成一项有意思的事情。drupal对请求的处理通过一个index.php来处理的:页面收到请求首先就访问这个程序,下面我们做点伟大的事情,也来学愚公移山。下面是index.php的代码: 程序开始就include进来一个bootstramp.inc 。这个程序是起着重要的作用,我们看名字就知道,bootstramp是‘解靴带’的意思,大家都穿过运动鞋,系过鞋带,也解过靴带,估计聪明的你已经想到了大概的意思,是的,解靴带就是一环一环做,一步一步来,不然说不定鞋带还会打节哈!在引入解靴带程序后,就执行解靴带程序。这个函数drupal_bootstramp()在整个服务中的作用不可言喻的,这里用了一个参数DRUPAL_BOOTSTRAMP_FULL,参数只是自定义常量,表示你解靴带到第几个眼,呵呵,就这么个意思。这里它的值是7,也就是最后一个眼,这个眼一解掉,就彻底解开了,你就可以做你想做的事情了,比如你随便浏览网页,假如你是个管理员,你甚至可以设置你想设置的很多东西。与DRUPAL_BOOTSTRAMP_FULL一起定义的还有六个参数,具体的我就不列举了。下面详细的解释一下这个函数。其实这个函数代码很少:function drupal_bootstrap($phase) {static $phases = array(DRUPAL_BOOTSTRAP_CONFIGURATION, DRUPAL_BOOTSTRAP_EARLY_PAGE_CACHE, DRUPAL_BOOTSTRAP_DATABASE, DRUPAL_BOOTSTRAP_ACCESS, DRUPAL_BOOTSTRAP_SESSION, DRUPAL_BOOTSTRAP_LATE_PAGE_CACHE, DRUPAL_BOOTSTRAP_PATH, DRUPAL_BOOTSTRAP_FULL);while (!empty($phases) $phase = $phases[0]) {??? $current_phase = array_shift($phases);??? _drupal_bootstrap($current_phase);}}首先有一个静态变量$phases,这个是个静态数组。用静态变量可能就是drupal的一大特色,有了静态变量,drupal增加了不少生机。所谓静态变量,就是在定义它的区域可用,区域之外不可用,但一直存在于内存中。这样的换,函数内部定义一个静态变量,只有在调用函数的时候,才能使用这个变量,而其他时间,它存在于内存中而不可用。这里的$phases表示解靴带的阶段,它存储的就是几个常量,就是1,2,...,7。很简单,就是步骤一,步骤二。???? 一个while语句实现判断阶段数组是否为空,并且当前阶段是否大于1,如果满足则执行里边的代码。仔细品位吧,这就象一杯苦咖啡,虽然苦,然苦尽甘甜现。array_shift() 将 array 的第一个单元移出并作为结果返回,将 array 的长度减一并将所有其它单元向前移动一位。所有的数字键名将改为从零开始计数,文字键名将不变。如果 array 为空(或者不是数组),则返回 NULL。这个函数太奇妙了,不是吗?它美妙的比喻了解靴带,首先我们看drupal_bootstramp(DRUPAL_BOOTSTRAMP_FULL),第一步,显然$phase=$phases[0];所以把$phases[0]移出数组,其他的全部前移,赋给$current_phase,执行_drupal_bootstramp($current_phase),第一个眼就这样解掉了;来我们来解下一个眼吧,如果不出意外(假设服务均正常),第二步,再把$phases[1]移出,...如此循环多次,直到把带子移出了所有的眼,那时页面也会显示给你了。??? 可能大家比较迷惑,因为现实解个靴带相当简单,可这里又冒出个_drupal_bootstramp(),到底什么意思嘛,别急,咱们接着看下去: 对一个请求提供服务当 Drupal 收到一个请求时都发生了什么,如果对此有一个概念上的框架,这对以后很有帮助,所以本部分将为这一框架提供一个快照。如果你自己也想追踪它的话,使用一个 好的调试器,从 index.php 开始,Drupal 的大多数请求都从这里开始。对于展示一个简单 web 页面,这里所列的顺序看起来有些复杂,但这是灵活性所必需的。Web 服务器的角色Drupal 运行在一个 web 服务器上,通常是 Apache 上。如果 web 服务

文档评论(0)

sa1fs5g1xc1I + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档