用Eclipse Europa举办Web开拓,第2部门 – PHP开拓东西
副标题#e#
身为一名 Web 开发人员,无论您想要使用哪种技术组合,Eclipse 都是可以 提高生产力的单一集成开发环境 (IDE)。在 “用 Eclipse Europa 进行 Web 开发” 三部分系列教程的第 1 部分中,您了解了如何使用 Eclipse 的最新版本 —— Europa —— 快速开发 Java™ Web 应用程序。在第 2 部分中,我们将了解使用统称为 PHP Development Toolkit (PDT) 的另一组 Eclipse 插件开发 PHP 应用程序是多么轻松。
开始之前
您是一名 PHP 开发人员么?如果是,那么使用什么作为开 发环境?您可能是 vi 和 Emacs 争论中的保守派,也可能想要使用 IDE,但是 还没有决定使用哪种现有商业产品。不管采用哪种方法,都需要了解适用于 Eclipse 的 PHP Development Toolkit。没错,Eclipse 不再只适用于 Java 开 发人员。拥有 PHP 编程背景对于发挥本教程的最大功效至关重要。熟悉 Eclipse IDE 十分有帮助,但并非必要。
关于本系列
在 “ 用 Eclipse Europa 进行 Web 开发” 系列中,您将了解到无论选择何种 语言,Eclipse 都是适用于 Web开发的平台。灵活的插件系统使它可以轻松地 创建各种针对使用 Java 技术、PHP 和 Ruby 的 Web 开发而定制的 Eclipse 版 本。您将看到不同的插件怎样为每种语言提供独特的 Eclipse 功能,还将看到 所有 Web 开发人员都可以利用的一些常用功能。在本系列中,我们将创建一个 样例棒球 Web 应用程序,该应用程序将允许我们输入棒球球员的比赛数据并计 算那些球员的统计信息。
关于本教程
Eclipse 多年来都是 Java 开发人员最喜爱的 IDE。但是,Eclipse 最初是 为成为适于所有语言的开发平台而设计的。Eclipse 是用 Java 编程语言编写的 ,因此很自然地,将 Java 开发作为起点。Eclipse 的插件架构已经获得了大量 强大插件并且是 Eclipse 成功的关键。Eclipse 是适合所有语言的强大开发平 台以及 Eclipse 的插件架构,综合这两个因素,您就可以实现针对 PHP 的基于 Eclipse 的 IDE。开发 PHP Development Toolkit 就这么简单。
本文是 关于用 Eclipse 开发 Web 应用程序的三部分系列教程的第 2 部分。到目前为 止,我们已经了解了使用 Eclipse IDE for Java EE Developers 在 Java 语言 中开发 Web 应用程序是多么轻松。Java EE Edition 实际上只是运行在 Eclipse Platform 上的插件集合。在本教程中,我们将了解如何使用统称为 PHP Development Toolkit (PDT) 的另一组 Eclipse 插件开发 PHP 应用程序。 我们还将再次了解 Java EE Edition 中的一些功能,这些功能也是 PDT 的一部 分。
先决条件
拥有 Java 编程背景对于发挥本教程的最大功效至 关重要。熟悉 Eclipse IDE 将十分有帮助,但并非必要。
系统要求
您的计算机需要安装以下软件或插件:
Eclipse Europa 本教程将使用 Eclipse V3.3 (Europa)。Java Development Kit (JDK) 本教程将向您展示如何使用 Java 技术开发 Web 应用程序,因此需 要使用 Java Development Kit (JDK) 5.0 或更高版本。下载 V5.0 或 V6.0。 Eclipse IDE for Java EE Developers 还需要使用 Eclipse IDE for Java EE Developers。Java 运行时环境(Java Runtime Environment,JRE) 要运行 Eclipse,必须配备 JRE。Apache Tomcat 应用程序将使用 Apache Tomcat 作为 容器。MySQL V5.0 应用程序将使用 MySQL V5.0 作为数据库。Java Persistence API 还需要使用 Java Persistence API,特别是 OpenJPA 实现。 Eclipse PHP Development Toolkit (PDT) 本教程将向您展示如何使用 PHP 开 发 Web 应用程序,因此需要使用 PHP Development Toolkit。您可以获得作为 现有 Eclipse 安装的一组插件的 PDT。如果您刚开始使用 Eclipse,则可以获 得包括 Eclipse 平台和 PDT 插件的完整安装。PHP 需要使用 PHP,因此请获取 最新版本,撰写本文时的最新版本为 V5.2.1。Apache HTTP Server 需要与 PHP 集成的 Web 服务器。本教程是使用 Apache V2.0.59 开发的。Fancy PHP 调试 器 需要一个 PHP 调试器。我们使用的是 Zend 调试器 V5.2.10。操作系统 需 要能够运行以上所有软件或插件的操作系统。创建本系列时使用的是 Mac OS X ,但是也可以使用 Windows® 或 Linux® 的近期版本。需要相应地调整 文件位置。
PHP Development Toolkit 简介
PDT 于 2007 年 9 月成功推出 1.0 发行版,那么您还在等什么?让我们开 始使用 PDT 并成为具有更高生产力的 PHP 开发人员。
为什么使用 IDE?
当然,PHP 的优点之一是可以用非常简单的工具完成很多工作。可以在 Web 服务器上的 “活动” 目录中直接编写代码,把浏览器指向页面,就这样!需要 更改代码?只需用一个文本编辑器修改它并刷新浏览器。谁需要 IDE?
应用程序最初可能非常简单,但是不可避免会变得越来越复杂。像适用于麦 克斯韦的恶魔一样,热力学第二定律(熵值将随时间增长而增加)同样适用于软 件工程。对于大多数开发人员来说,如果有调试器可以停止执行代码、深入到代 码中进行研究、检验应用程序的状态等,则更容易开发这类系统。
#p#分页标题#e#
复杂的应用程序通常都有多个开发人员同时进行开发。通常需要进行源代码 控制,并且最好将源代码控制集成到开发环境中。使用源代码控制通常涉及使源 代码与执行环境(通常为 Web 服务器)保持独立。在这种情况下,最好有一种 开发环境可以让您轻松地把代码部署到 Web 服务器上。
PHP 开发几乎总是涉及使用数据库。当然,可以使用命令行工具和基于文本 的工具来使用数据库。也可以使用图形程序来轻松完成操作。最好把图形环境集 成到开发环境中。这就是所谓的集成 开发环境。 PDT 无疑就是一个集成开发环 境。
#p#副标题#e#
为什么使用 PDT?
让我们假定您确信 IDE 能够为 PHP 开发提供好处。PDT 不是第一个也不是 惟一一个用于 PHP 的 IDE。有一些用于 PHP 的商业 IDE 受到高度关注。 Eclipse PDT 免费并且是开源的。它基于 Eclipse 构建,这意味着可以充分利 用 Eclipse Platform 的优点。它是跨平台的,因此可以在 Windows、Mac OS X 或者所选的 Linux 发行版中使用它。有大量插件适用于 Eclipse,也因而适用 于 PDT,因此可以根据需要添加专门功能,也可以根据需要在其他语言中进行开 发。让我们就来看看使用 PDT 会有哪些好处。
使用 PDT 的好处是什么?
我们说过 PDT 只是 Eclipse Platform 的插件集合。每个插件都提供旨在提 高生产力的特定功能。核心 PHP 插件将提供语法突出显示、语法提示和所有 PHP 核心函数的集成查找功能。它与 Web 服务器集成在一起并且让您可以轻松 地把代码部署到 Web 服务器上。您可以在内部 Web 浏览器中查看页面,也可以 指定一个外部浏览器(Firefox、Internet Explorer、Safari 等)来查看页面 。
如前述,您将得到的最有价值好处之一是集成调试器。可以直接从 PDT(它 包括一个 PHP 可执行文件)执行和调试 PHP 代码。还可以将 Web 服务器配置 为使用启用调试的 PHP 版本,并调试在 Web 服务器上实时运行的脚本。
最后,同样重要的一点是,您获得了非特定于 PHP 的功能,这要归功于 Eclipse 的可扩展性。这种可扩展性包括用于连接到任何数据库(任何可以使用 JDBC 驱动程序的数据库,几乎包括所有数据库)、创建表、查询和更新数据等 的数据库工具。PDT 中还有一个内置 CVS 客户机。如果使用 Subversion 而不 使用 CVS,则可以轻松地获得 Subversion 插件。同样,您还可以同时编写 PHP 、JavaScript 和 CSS;而且使用 PDT,可以选择可用于 JavaScript 和 CSS 的 几个优秀 Eclipse 插件。现在,您已经确定要在下一个 PHP 项目中使用 PDT, 让我们来看看如何安装 PDT。
安装 PDT
获得并安装 PDT 毫不费力。它不仅是基于 Eclipse 构建的。像 Eclipse 一 样,它完全是开源的。没有试用期限也不必担心许可证的问题。只需下载就可使 用它。下载 PDT 的方法有两种,这取决于是否已经安装有 Eclipse。如果您学 完了本系列的 第 1 部分,则已经拥有了 Eclipse Java EE Edition。首先来看 如何在 Eclipse 之上安装 PDT。
作为插件安装
首先把 PDT 安装为 Eclipse 的插件。Eclipse 的插件架构使这项操作变得 很简单。安装任何 Eclipse 插件的最简单方法是使用它的更新系统。首先选择 Help > Software Updates > Find and Install,如下所示:
图 1. 查找并安装更新
现在需要选择 Search for new features to install,如下所示:
图 2. 搜索要安装的新功能
现在需要把 PDT 的更新站点添加到 Eclipse 已知的站点列表中。通过单击 New Remote Site 添加该站点。
图 3. 新远程更新站点
现在需要输入 PDT 更新站点的信息。对于新远程站点的名称,您可以选择能 够帮助识别站点的任何名称(例如,“PHP Development Toolkit Updates”) 。URL 是要输入的重要字段,并且官方站点是 http://download.eclipse.org/tools/pdt/updates,如下所示:
图 4. PHP 更新站点信息
新更新站点应当显示在站点列表中并且应当被自动选中。确保它是惟一被选 中的条目并单击 Finish。
图 5. 选择 PHP 更新站点
Eclipse 现在将 ping 更新站点以获得可用于下载和安装的更新列表。选择 PHP Development Toolkit Updates 并单击 Finish。
图 6. 可用更新
现在您应当会看见要安装的功能列表和许可证协议。接受条款并单击 Finish 。
图 7. 功能和许可证协议
#p#分页标题#e#
现在 Eclipse 将下载并安装 PDT 插件。完成后,可能会要求您重新启动 Eclipse。在重新启动之后,应当能够通过切换到 PHP 透视图来检验 PDT 安装 。选择 Window > Open Perspective > Other。
图 8. 更改透视图
此操作应当会打开可用透视图列表。从列表中选择 PHP 并单击 OK。
图 9. 选择 PHP 透视图
此操作应当会打开 PHP 透视图。我们很快就将使用该透视图,但是让我们先 来快速查看 PDT 的另一种安装方法。
独立安装
如果您刚开始使用 Eclipse,有一种更简单的方法安装 PDT。您可以下载 Eclipse 和 PDT 的 完整发行版。选择并下载 PDT All-In-One,然后将其解压 缩并启动 Eclipse。启动了 Eclipse 之后,选择 Window > Open Perspective > PHP 来切换到 PHP 透视图。
图 10. 打开 PHP 透视图
现在应当已经安装了 PDT 并且可供使用。需要配置 Eclipse PDT。
配置 PDT
安装了 PDT 之后,可以开始继续处理。但是首先还有其他一些事情需要做。 有几个 PDT 配置可以使开发更简单。首先来配置 Web 服务器。
用 Apache 配置 PDT
我们可以设置项目并使用 Web 服务器的根目录下的一个目录作为源代码文件 夹,但是最好把源代码和部署分开。需要让 PDT 知道 Web 服务器的位置,以便 它可以把我们的源代码发布到其中。为此,打开首选项。
图 11. Eclipse 首选项
在 Preferences 下,展开 PHP 并选择 PHP Servers。
图 12. PHP 服务器
通常在那里已经有一个实际上尚未配置的默认服务器。您可以添加一个新服 务器或只配置默认服务器。不管采用哪种方法,您都应当会看到类似于图 13 的 对话框。
图 13. 配置 Web 服务器路径
这里最重要的是设置 Web 服务器的路径和相应的 URL。完成后,单击 OK。 从 Preferences > PHP 菜单中,选择 PHP executables。
图 14. PHP 可执行文件首选项
单击 Add 应当会打开如下所示的对话框。
图 15. 添加 PHP 可执行文件
您可以设置任意所需标签。更重要的是选择 PHP 可执行文件所在的目录。如 果不知道它,可以使用 Browse 按钮查找此目录。保留 PHP 调试器设为默认值 Zend。单击 OK,完成配置 Web 服务器。现在几乎完成了 PDT 配置。只需要配 置 PDT 与我们的数据库通信。
连接到 MySQL
应用程序将使用一个数据库,具体地说是 MySQL。PDT 是一个插件集合,并 且那些插件中的几个插件将提供特定于 PHP 的功能。它还将包括几个用于访问 数据库的插件。但是,访问数据库不是 PHP 的特有功能,而且同样地,PDT 所 使用的 Eclipse 数据库插件也不是 PDT 特有的。
如果您学完了本系列的 第 1 部分,则已经使用过 PDT 附带的数据库插件。 如果学完了第 1 部分并在 Java EE Edition 之上安装了 PDT 作为插件,则已 经对 PDT 进行了配置以连接到 MySQL。如果尚未学习该部分,请查看第 1 部分 并创建其中所述的 baseball 数据库。应当能够切换到 Database Development 透视图 (Window > Open Perspective > Other > Database Development) 并使用 Data Source Explorer 连接到 baseball 数据库。
图 16. 连接到 baseball 数据库
现在可以查询数据库,我们已经准备好开始为第 1 部分中开始的棒球应用程 序编写更多代码。
棒球应用程序
#p#分页标题#e#
现在已经设置了 PDT,让我们开始用 PDT 进行开发。首先在 PDT 中创建一 个 PHP 项目,然后使用 PDT 创建 PHP 文件。我们将使用 PDT 的功能来辅助编 写代码,然后使用它发布代码以便测试代码。
使用 PHP 向导
首先在 PDT 中创建一个 PHP 项目。确保您在 PHP 透视图中 (Window > Open Perspective > PHP)。默认情况下,PHP Explorer 视图位于左上角。 您可以根据需要来回移动。在 PHP Explorer 中,右键单击并选择 New > PHP Project。
图 17. 新建 PHP 项目
此操作将打开 New PHP Project 向导。它是一个简单的向导,您只需要在其 中设置项目名称和代码位置。
图 18. 新 PHP 项目信息
单击 Finish 将创建 PHP 项目。现在可以在 PHP Explorer 中右键单击并选 择 New > PHP File。
图 19. 新建 PHP 文件
此操作将打开 New PHP File 向导。可以配置文件的路径和名称。
图 20. 新 PHP 文件信息
只需单击 Finish,PDT 将根据可以随意编辑的模板创建一个具有基本骨架的 新 PHP 文件。我们将创建的第一个文件是用于定义常量的文件。
清单 1. constants.php
<?php
define('DB_HOST', "127.0.0.1:3306");
define('DB_USER', "root");
define('DB_PASSWORD', "password");
define('DB_NAME', "baseball");
?>
我们已经定义了数据库连接常量。很明显,需要更改这些值以与环境的配置 相对应。PDT 的优点之一是跟踪项目的结构,包括常量。默认情况下,PHP Project Outline 视图位于左下角。选中它,展开 Constants 部分,然后应当 会看到如下所示的结构。
图 21. PHP 项目概要视图
现在让我们使用这些常量来创建一个数据库连接,该数据库连接可以包含在 需要访问数据库的任何脚本中。创建另一个 PHP 文件,如上所示。把这个文件 称为 db.php。将包括 constants 文件,然后需要创建 MySQL 数据库连接。如 果编写过大量 PHP,您可能会知道有关语法,但是如果没有,那么 PDT 可以帮 助您。默认情况下,PHP Function View 也位于左下角。选中它并查找 mysql_connect 函数。
图 22. 使用 PHP 函数视图
您不但会获得 PHP V5 中所有标准函数和类的清单,而且还可以访问函数文 档。只需选择函数并把鼠标放在上面。找到所需的函数后,双击该函数,然后它 将被插入到编辑器中光标所在的位置。当您开始把输入参数输入到函数中时,将 在上方显示参数信息以帮助跟踪输入内容。
图 23. 带有库函数的代码帮助
mysql_connect 函数将创建一个数据库连接。现在可以编写一些代码来检查 连接是否存在。代码帮助将再次出现。
图 24. 建议本地变量的代码帮助
您可以想象这种代码帮助将多么有用,尤其是在项目和脚本变得越来越复杂 时。db.php 脚本的其余代码如下所示:
清单 2. dp.php 脚本
<?php
require_once(dirname(__FILE__)."/constants.php");
$conn = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
if (!$conn) {
echo "Unable to connect to DB: " . mysql_error ();
exit;
}
if (!mysql_select_db(DB_NAME)) {
echo "Unable to select mydbname: " . mysql_error ();
exit;
}
?>
此脚本能够在多个位置重复使用。首先创建一张用于把新球员信息输入到系 统中的表单。
球员输入表单
创建用于输入新球员的基本表单。创建名为 new_player.php 的 PHP 文件。 我们将从基本 HTML 开始。
清单 3. new_player.php:仅 HTML 表单
#p#分页标题#e#
<html>
<head>
<title>Player Entry Form</title>
</head>
<body>
<form id="entry" method="POST">
<input type="hidden" name="action" value="create"/>
<div id="fnSection">
<span id="firstNameLabel">First Name:</span>
<input type="text" name="firstName"/>
</div>
<div id="lnSection">
<span id="lastNameLabel">Last Name:</span>
<input type="text" name="lastName"/>
</div>
<div id="submitSection">
<input type="submit" value="Save"/>
</div>
</form>
</body>
</html>
PDT 将为您提供优秀的 HTML 语法突出显示功能。我们将提交表单。因此现 在只需添加处理逻辑。我们将使用 db.php 脚本并再次使用 PDT 的 PHP Function 视图来帮助我们编写数据库逻辑。完成的脚本如下所示:
清单 4. new_player.php:完整
<?php
if ($_POST["action"]){
$label = "";
require_once(dirname(__FILE__)."/db.php");
$firstName = mysql_escape_string($_POST ["firstName"]);
$lastName = mysql_escape_string($_POST ["lastName"]);
$fullName = "$firstName $lastName";
$sql = "insert into Players(First_Name, Last_Name) values
('$firstName','$lastName')";
mysql_query($sql, $conn);
$id = mysql_insert_id($conn);
$label = " Insert successful for $fullName new ID=$id";
}
?>
<html>
<head>
<title>Player Entry Form</title>
</head>
<body>
<?=$label ?><br/>
<form id="entry" method="POST">
<input type="hidden" name="action" value="create"/>
<div id="fnSection">
<span id="firstNameLabel">First Name:</span>
<input type="text" name="firstName"/>
</div>
<div id="lnSection">
<span id="lastNameLabel">Last Name:</span>
<input type="text" name="lastName"/>
</div>
<div id="submitSection">
<input type="submit" value="Save"/>
</div>
</form>
</body>
</html>
现在我们有了完整的表单和脚本。接下来就该测试它了。
部署到 Web 服务器
用 PDT 部署到 Web 服务器(本例中为 Apache)十分轻松。在 PHP Explorer 中,在需要测试的 PHP 页面中右键单击并选择 Run As > PHP Web Page。
图 25. 作为 PHP Web 页面运行
此操作将打开 Run PHP Web Page 对话框。该对话框将让您知道发布代码的 位置以及它将打开的 URL。可以根据需要调整这些信息。
图 26. 运行 PHP Web 页面对话框
默认情况下,Eclipse 将使用内部 Web 浏览器(这是特定 OS 上的 “本机 ” 浏览器,Windows 上的 Internet Explorer,Mac OS X 上的 Safari 等)来 查看 Web 页面。我们现在将使用此设置。您应当会看到如下所示的页面:
图 27. Eclipse 中的新球员页面
输入一个新球员并单击 save。此操作应当会刷新页面。
图 28. Eclipse 中的已添加球员页面
#p#分页标题#e#
对于快速测试来说,这个结果非常好。更复杂的应用程很可能将大量利用 CSS 和 JavaScript,因此在查看 Web 页面时可能需要使用更复杂的调试选项。 要配置使用的 Web 浏览器,请单击 Preferences > Web browser,如下所示 :
图 29. 选择 Web 浏览器
现在如果重新启动应用程序,它应当在所选浏览器中打开。
图 30. 在 Firefox 中启动的页面
到目前为止,我们已经创建并部署了一个简单页面。让我们通过构建略微复 杂的页面来继续研究 PDT 的功能。
球员管理
接下来将创建所有球员的列表。我们将查看 PDT 可以帮助完成类似任务的一 些新方法。首先从数据库中读取所有球员。
显示所有球员
首先需要做的是显示数据库中的所有球员。创建名为 list_players.php 的 新 PHP 文件。我们将包括 db.php 脚本,因为需要查询数据库。需要使用 PHP 函数 mysql_fetch_assoc 把一行数据获取到 PHP 中的联合数组中。让我们假定 不太熟悉这个函数并且需要比在 PDT 中获得的基本文档更多的帮助。您需要 PHP 手册,不过很幸运的是:右键单击可以访问手册,如下所示:
图 31. 从 PDT 访问 PHP 手册
默认情况下,此操作将打开 PHP.net 中的联机手册。您可以配置此操作,如 果计算机中有手册的本地副本,那么配置将尤为有用。球员的基本显示代码如下 所示:
清单 5. 所有球员的基本显示
<?php
require_once(dirname(__FILE__)."/db.php");
$message = "";
$cnt = 0;
$sql = "select * from Players";
$result = mysql_query($sql,$conn);
$list = array();
if (!$result) {
$message = "Could not successfully run query ($sql) from DB: " . mysql_error();
} else if (mysql_num_rows($result) == 0) {
$message = "No rows found, nothing to print so am exiting";
} else {
while ($record = mysql_fetch_assoc($result)){
$list[$cnt++] = $record;
}
}
mysql_free_result($result);
?>
<html>
<head>
<title>Player List</title>
</head>
<body>
<div id="title">Player List</div>
<div id="pTableBox">
<table border="2">
<thead>
<tr>
<td>ID</td>
<td>First Name</td>
<td>Last Name</td>
</tr>
</thead>
<tbody>
<?php foreach($list as $player): ?>
<tr>
<td><?= $player["Id"] ?></td>
<td><?= $player["First_Name"] ?></td>
<td><?= $player["Last_Name"] ?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
这段代码将显示数据,但是假设我们还需要添加一些排序功能。
排序
排序可以在数据库中完成,但是为了演示目的,将在 PHP 中完成排序。我们 将对联合数组使用排序。
清单 6. 联合数组排序
#p#分页标题#e#
<?php
function assoc_sort($array, $id="Id", $sort_ascending=true, $is_object_array = false) {
$temp_array = array();
while(count($array)>0) {
$lowest_id = 0;
$index=0;
foreach ($array as $item) {
if (isset($item[$id])) {
if ($array[$lowest_id][$id]) {
if ($item[$id]<$array[$lowest_id] [$id]) {
$lowest_id = $index;
}
}
}
$index++;
}
$temp_array[] = $array[$lowest_id];
$array = array_merge(array_slice($array, 0,$lowest_id),
array_slice($array, $lowest_id+1));
|-------10--------20--------30--------40--------50--------60------- -70--------80--------9|
|-------- XML error: The previous line is longer than the max of 90 characters ---------|
}
if ($sort_ascending) {
return $temp_array;
} else {
return array_reverse($temp_array);
}
}
?>
现在添加一种选择排序的方法和一些用于在 Web 页面中触发此功能的 JavaScript。
清单 7. 修改后带有排序功能的球员显示
<?php
require_once(dirname(__FILE__)."/db.php");
$message = "";
$cnt = 0;
$sql = "select * from Players";
$result = mysql_query($sql,$conn);
$list = array();
if (!$result) {
$message = "Could not successfully run query ($sql) from DB: " . mysql_error();
} else if (mysql_num_rows($result) == 0) {
$message = "No rows found, nothing to print so am exiting";
} else {
while ($record = mysql_fetch_assoc($result)){
$list[$cnt++] = $record;
}
}
mysql_free_result($result);
$sort = $_GET["sort"];
if ($sort){
// sort the data
require_once(dirname(__FILE__)."/sort.php");
$list = assoc_sort($list, $sort, true, false);
}
?>
<html>
<head>
<title>Player List</title>
<script type="text/javascript">
function doSort(){
document.getElementById("sortForm").submit ();
}
</script>
</head>
<body>
<div id="title">Player List</div>
<div id="sort">
<form id="sortForm" method="GET">
<span id="sortLabel">Sort by:
<select name="sort" onchange="doSort()">
<option value="Id"> </option>
<option value="First_Name">First Name</option>
<option value="Last_Name">Last Name</option>
</select>
</span>
</form>
</div>
<div id="pTableBox">
<table border="2">
<thead>
<tr>
<td>ID</td>
<td>First Name</td>
<td>Last Name</td>
</tr>
</thead>
<tbody>
<?php foreach($list as $player): ?>
<tr>
<td><?= $player["Id"] ?></td>
<td><?= $player["First_Name"] ?></td>
<td><?= $player["Last_Name"] ?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
现在已经创建了一张更复杂的表单,可能会有更复杂的错误。这可能是引入 调试器的好时机。
调试
#p#分页标题#e#
要使用 PHP 进行调试,必须将 Web 服务器设置为提供调试符号并允许调试 器连接、获得调试信息以及控制执行流程。还必须有一个可以连接到服务器的客 户机。PDT 就是这样一个客户机。它所支持的调试器之一是 Zend 调试器。一般 而言,Zend 是 PHP 的主要贡献者并且也是 PDT 的主要贡献者。
安装 Zend 调试器
要为 PDT 安装 Zend 调试器,可以使用 Eclipse 的软件更新功能。这就像 把 PDT 安装为 Eclipse 插件的过程一样。惟一的差别是需要的更新站点是 http://downloads.zend.com/pdt。
要在服务器上安装 Zend 调试器,需要执行几个步骤。首先,必须下载它。 然后需要将其添加到 PHP 扩展目录中,并且配置 php.ini 文件启用扩展(并禁 用任何不兼容的扩展)。它随名为 dummy.php 的脚本一起附带,该脚本将把实 际的调试信息提供给客户机。一切就绪后,可以开始在 PDT 中进行调试。
为 PDT 调试
要在 PDT 中设置一个断点,请在代码中选择一行,在其中右键单击并选择 Toggle Breakpoints。
图 32. 设置断点
要开始调试,请在 PHP Explorer 中的脚本上右键单击并选择 Debug As > PHP Web Page。
图 33. 作为 PHP Web 页面调试
系统应当会提示您切换到 PHP 调试透视图。执行此操作。您应当会看到调试 视图,如下所示:
图 34. PHP 调试透视图
您现在可以深入到代码中并检查变量。
图 35. 检查本地变量
如果使用 Eclipse 进行 Java 开发,所有这些内容看上去将非常 类似。它是在 Java 开发中使用的同一组调试工具。它是能够提高生产力的强大 调试器。
结束语
Eclipse 可用于为 Web开发设置所需的一切内容,它与数据库、Web 服务器 及任何所需内容集成在一起。它将提供用于创建项目和 PHP 文件的向导,还提 供语法突出显示、代码帮助、代码和项目的图形结构视图、函数列表以及快速访 问文档的功能。它可以轻松地发布和运行代码。最后,它把 Eclipse 的强大调 试器引入 PHP 世界。
在第 3 部分中,我们将继续利用 Europa 进行 Web 开发,使用 Ruby Development Tools (RDT) 和 RadRails 插件进一步扩展棒球应用程序。
本文配套源码