MVC 框架如何提供帮助

在几年前,PHP 一直缺乏一个良好的、功能完善的模型-视图-控制器(Model-View-Controller,MVC)框架。MVC 框架允许程序员将其代码组织为三个不同的功能区:

1) 模型 包含与您的数据库和其他数据结构相关的所有代码。如果您具有一个名为 pages 的表,则您具有一个模型,其中具有用于从表中选择、创建、更新和删除记录的函数。

2) 视图 包含所有显示和 UI 元素 — JavaScript 代码、Cascading Style Sheets (CSS)、HTML 甚至 PHP。

3) 控制器 将一切联系在一起。控制器中的每个函数表示一个目的地或路线。如果您具有一个名为 /about 的目的地,则控制器将具有一个名为 about() 的函数。

如果以前没有使用过 MVC 框架,上述三点无法体现出这种组织模式的强大之处。一旦您开始用 MVC 思考,您对 PHP 开发的观点和态度将发生显著变化。

例如,不是在项目的每个可用角落中都塞入数据库查询代码,而是将一切都组织到模型中。为了从数据库表中选择页面,可以使用页面模型中的函数。

同样地,如果您需要更新特定页面的外观,可以使用视图,而不用与控制器打交道。与此类似,控制器是为您的应用程序添加目标和其他控制代码的位置;不必在模型中放入任何此类东西。

无论使用哪种 MVC 框架,在一天之内,您就会意识到您具有一个容易记住、可按需扩展的系统。如果客户在下周需要更改,没问题 — 您可以搞定。如果第二年有什么请求,同样如此。

约定优于配置 MVC

结果不仅仅能得到组织良好的代码,而且还有速度极快、易于使用的 Web 开发环境。这都是 PHP 世界的梦想。经过一两年之后,许多MVC框架纷纷出现:CakePHP、Symfony 等等。

了解 CodeIgniter

最终,EllisLab 的工作人员发布了 CodeIgniter。许多企业尝试体验过所有 PHP MVC 框架之后,CodeIgniter 都成为赢家,主要是由于它为组织提供了足够的自由支持,允许开发人员更迅速地工作。

自由意味着使用 CodeIgniter 时,您不必以某种方式命名数据库表,也不必根据表命名模型。这使 CodeIgniter 成为重构遗留 PHP 应用程序的理想选择,在此类遗留应用程序中,可能存在需要移植的所有奇怪的结构。

CodeIgniter 不需要大量代码(1.6.2 版本仅为 2.8 MB,其中的 1.3 MB 是可以删除的用户文档),也不会要求您插入类似于 PEAR 的庞大的库。它在 PHP 4 和 PHP 5 中表现同样良好,允许您创建可移植的应用程序。最后,您不必使用模板引擎来创建视图 — 只需沿用旧式的 HTML 和 PHP 即可。

至此,我们已经提供了足够的介绍,下面来构建一个简单的项目,看看它的效果。

安装和配置 CodeIgniter

在构建任何 CodeIgniter 新项目时,第一步都是下载最新软件包(在本文撰写时,最新软件包是 1.6.2,请参见 参考资料 小节)。下载压缩存档文件(.zip)并解压缩之后,您就获得了一个 codeigniter_ 文件夹,其中包括开始创建所必须的一切内容。

在进行一组必需的轻微的配置更改之前,本节将为您简单介绍 CodeIgniter,使您熟悉它的基础知识。

文件夹结构

打开 CodeIgniter 文件夹时,您会看到一个名为 system 的文件夹。所有 CodeIgniter 代码都将存放在这里。在此文件夹内还有一些文件夹,其中有一个名为 application:您要处理的文件都差不多位于此文件夹内。该文件夹的命名十分贴切,因为它包含您的应用程序及其所有组成部分 — system 文件夹的其他部分包括 CodeIgniter 核心代码和其他不应混淆的文件。

application 文件夹下又分为多个文件夹大多数文件夹易于理解。模型存放在 models 文件夹中、视图存放在 views 文件夹中、控制器存放在 controllers 文件夹中,依此类推。还有一些文件夹用于存储 CodeIgniter 帮助程序和库的本地扩展。

就目前而言,system/application 文件夹中最重要的文件夹就是 config。该文件夹内有两个需要关注的文件:config.php 和 database.php。

config.php 文件包含设置 CodeIgniter 所需的基本参数和自变量。database.php 文件包含连接数据库所需的基本参数和自变量。

就目前而言,对于 config.php 文件,您只需设置 base_url 参数,例如设置为 https://127.0.0.1/CodeIgniter/。根据您正在使用的服务器地址更改此设置:

$config['base_url']    = www.example.com
务必牢记添加最后的斜杠,即便是在子目录中设置 CodeIgniter 应用程序时也是如此。

接下来,打开 database.php 文件,为数据库服务器设置 connection 参数:

$db['default']['hostname'] = "your-db-host";
$db['default']['username'] = "your-username";
$db['default']['password'] = "your-password";
$db['default']['database'] = "your-db-name";
$db['default']['dbdriver'] = "mysql";
就是这样。您还可以进行其他一些设置(如自动加载首选项和特殊路径),但只要 CodeIgniter 了解它位于何处且可连接其底层数据库,您就可以放心开始编写代码了。