Drupal 的体系结构

一言以蔽之,Drupal是一个基于web的内容管理系统,它是用 PHP 编写的,使用关系型数据库(通常是 MySQL)存储数据。

PHP表示 PHP 超文本处理器,是一种用于web应用开发的高级语言。PHP具有很强的灵活性,既支持过程化的开发方法,也支持面向对象(OO)的软件开发方法。

Drupal 的核心是用过程化风格的 PHP 小心谨慎地写成的。代码遵循严格的约定,每个文件和函数都在源码中有文档说明。API通常很小,保持简洁和实用。这些因素使得 Drupal 的源码与那些平庸的 PHP 代码相比更易于阅读。但是极度简洁的代码常常使人误解,其实,对于这个健壮的内容管理系统,使用简单的工具和模块组合能够产生极为复杂的功能。

提示:为什么 Drupal 不是面向对象的?这个问题常常被问到。回答包括几个方面,其中一个原因很简单,那就是当这个项目起步的时候,PHP还美有面向对象的特性。不过,虽然看起来缺少了构造函数和类,但 Drupal 采用了很多 OO 的原则:封装、继承、多态等。OO 程序员很快就能自如使用 Drupal 的体系结构。

一个简化的 Drupal 技术层次图如下所示:

插图 1-1

中间是 Drupal 的核心,它是一组文件,由自举代码和重要的常用函数库组成。Drupal 核心函数库是粘结层,把 Drupal 的模块粘结在一起。它们提供的服务包括数据连接与管理(上图中由连到数据库的虚线表示)以及本书将要详细讲解的高度可定制的钩子框架。其它标准特性包括邮件与图像库、国际化、Unicode支持也包含在 Drupal 核心库之中。

提示:很多必备的系统模块被称为Drupal的核心模块。在上图中,我本应把它们与其它模块并列表示,因为它们是必不可少的模块。

但是尽管这些文件很重要,仍有理由保持上图中的 Drupal 核心库部分相对精简。尽管这些库提供了强大的特性集,但其实 Drupal 真正强大之处在于它的模块化体系结构。

|