You are here

1.1 index.php文件

admin 的头像
Submitted by admin on 星期三, 2015-07-22 09:44

作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com

我们看到的,几乎所有的Drupal页面,入口程序都是index.php。当然也有例外,比如安装Drupal时,会使用install.php,更新Drupal时,会使用update.php。例外的情况,我们这里就不分析了,我们来分析一下正常的情况。

我们打开Drupal根目录下的index.php程序,我们看到了非常简洁的代码:

<?php

 

/**

 * @file

 * The PHP page that serves all page requests on a Drupal installation.

 *

 * The routines here dispatch control to the appropriate handler, which then

 * prints the appropriate page.

 *

 * All Drupal code is released under the GNU General Public License.

 * See COPYRIGHT.txt and LICENSE.txt.

 */

 

/**

 * Root directory of Drupal installation.

 */

define('DRUPAL_ROOT', getcwd());

 

require_once DRUPAL_ROOT . '/includes/bootstrap.inc';

drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);

menu_execute_active_handler();

    老外写代码,通常是注释比代码长,这个文件也不例外。上面的注释说,Drupal所有的页面,都走这个入口程序。路由系统,将会把控制权分发给对应的处理器,然后输出对应的页面。我们往下看代码,第一行:

define('DRUPAL_ROOT', getcwd());

这里面定义了一个常量,DRUPAL_ROOTgetcwd,用来获取当前文件所在的目录,比如我们这里就是D:\xampp\htdocs\snt6

第二行代码:

require_once DRUPAL_ROOT . '/includes/bootstrap.inc';

这段代码的作用,是加载bootstrap.inc文件。

第三行代码:

drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);

这段代码的作用,是启动Drupal,说的更完整一点就是启用Drupal的完整引导指令。drupal_bootstrap这个函数,位于bootstrap.inc文件中,我们前面加载这个文件,就是为了执行这个函数。这里的引导指令,是每个Drupal页面,都要走过的流程。这就有点类似于,我们打开计算机的时候,点了启动按钮,点过之后,计算机需要一个启动的过程,这个电脑的开机启动过程,就类似于Drupal的引导指令。

第四行代码:

menu_execute_active_handler();

这个函数做了什么?连个参数都没有。前面Drupal已经启动了,跑了起来,这个函数的作用是这样的,根据Drupal看到的路径,找到对应的回调函数,调用对应的回调函数,然后将返回的内容,组装成HTML页面,返回给浏览器。也就是英文注释里面所讲的。

这就是Drupal的组装过程,非常简单。与其它系统不一样,Drupal只有一个入口程序,我见过的一些系统都是这样的:

http://www.example.com/foroum.php

http://www.example.com/login.php

http://www.example.com/user/register.php

只有Drupal,是一个入口程序。

index.php文件的逻辑结构


Drupal版本: