使用开源软件设计、开发和部署协作型 Web 站点,第 13 部分: Eclipse 中的 ...

来源:百度文库 编辑:神马文学网 时间:2024/04/18 21:22:25
在这个文章系列中,在 IBM? Internet Technology Group 团队的带领下,使用一套可免费获得的软件为虚构的 International Business Council 公司设计、开发和部署一个外部网 Web 站点。在这篇文章中,探索如何使用 Eclipse 的集成开发环境创建自己的 Web 站点,主要关注 Eclipse 对 PHP 的支持以及使用 Concurrent Versions System(CVS)进行版本控制。
在这篇文章中,您将学习编写 PHP 代码的典型开发过程,包括创建 PHP 文件、代码调试周期以及与团队成员共享文件。这个过程要在 Eclipse 开发环境中进行,并使用 PHP 集成开发环境(IDE)项目和 CVS 的特性。
PHP 是一种广泛应用的通用脚本语言,特别适合进行 Web 开发,并可以嵌入在 HTML 中。
本文中的信息不应该解释为必须严格遵守的开发规则,而是应该作为在 Eclipse 中开始进行开发的起点。
在本系列的第 3 部分 和第 4 部分 中,分别介绍了如何在 Windows? 和 Linux? 系统上安装和配置 Eclipse 开发环境。您应该熟悉以下 Eclipse 术语:
插件(Plug-in)
打包在一起的功能,它们可以扩展其他插件或者被其他插件扩展
特性(Feature)
可供下载和安装的插件集合(这简化了插件的打包和发布)
透视图(Perspective)
一种包含几个视图的 Eclipse 配置,这些视图协同工作来为某一特定任务提供支持(比如,支持 PHP 编程、Java? 编程、CVS 等任务的透视图)
视图(View)
视图是窗口框架的一部分,它提供一种功能来支持它所在的透视图的任务(视图通常提供当前处理的项目的相关信息,比如资源管理器、大纲、控制台等等)
编辑器(Editor)
用来编辑内容的一种视图,它们与某一文件类型相关联,比如 PHP 编辑器和 Java 编辑器
图 1 显示我们将在本文中安装和配置的 Eclipse PHP IDE,它用来编写和调试 PHP 代码。

在本文中,将在我们的项目中创建一个新模块,学习如何调试它,最后使用 CVS 与合作开发人员共享它。
在安装 Eclipse 的过程中,您了解了如何创建项目并将文件导入 Web 站点。在创建定制的 Announcements 模块时,学习了如何创建新的 PHP 文件。
在编写代码时,如果能够提供函数的文档,会很有帮助。phpDocumentor 在 PHP 开发的编写阶段很有帮助。它是一个用 PHP 编写的工具,用于从 PHP 代码和外部文档直接创建文档。它会在注释区域中添加额外的标记来提供更多的信息,还会利用 PHP 的知识生成文档。phpDocumentor 通过读取 DocBlocks(特殊的 PHP 注释)来生成手册格式的文档。DocBlocks 使 PHP 代码的编写者可以为文档提供适当的信息。
HTML Tidy 是另一种有助于编写 HTML 代码的工具。HTML Tidy 会查找并纠正标记中的错误,从而清理 HTML。它也为 PHP 和 XML 提供了有限的支持。Eclipse 会用适当的颜色显示代码,这也有助于寻找标记错误。




回页首
在开发 Drupal 模块期间,有许多进行调试的方法。使用 var_dump 和 print_r 的方法是非常有效的,在测试过程中肯定用得到。但是,完全成熟的调试器是一种非常强大的工具,可以帮助开发人员了解代码的工作方式、发现问题和解决功能性问题。在下一节中,您将学习如何在 Eclipse 环境中安装、配置和使用调试器。
在第 3 部分 和第 4 部分 中,我们探讨了如何安装 PHPEclipse,这一 Eclipse 特性提供一个用来开发 PHP 项目的 IDE 透视图。如果使用正确的 PHP 版本,那么可以安装并配置DBG 调试器 来处理 Eclipse 设置。另一种选择是使用XDebug 调试器。
第三种选择是使用 Zend 为 Eclipse 提供的 PHP 开发环境,其中集成了 Zend 调试器。(可以在Zend 或者Eclipse 了解关于这个 PHP IDE 项目的更多信息。)在本节的其余部分,学习如何安装、配置和使用 Zend 工具来帮助对 Drupal 模块进行调试。我们将以 Announcement 模块为例。
假设您已经安装了 PHPEclipse,那么可以禁用或者卸载这个特性。首先,通过 Help > Software Updates > Manage Configuration 菜单打开 Manage Configuration 对话框,见图 2。

这个对话框列出 Eclipse 安装的特性(插件的集合),见图 3。应该会在这个列表中看到 PHPEclipse 特性;选择它来查看更多信息。

右击这个列表中的 PHPeclipse 将显示一个上下文菜单,其中提供了禁用或者卸载这个特性的菜单项。目前,只需禁用这个特性。按照提示重新启动 Eclipse 来完成这个过程。
首先,安装 PHP IDE 特性。启动 Eclipse,打开 Find and Install 对话框(Help > Software Updates > Find and Install)。
选中 Search for new features to install 并点击 Next。为了添加新的 Update Site,点击 New Remote Site,输入更新 URL 和项目的描述。到编写本文时,Zend 或 Eclipse PHP IDE 项目页面上指出的更新 URL 是http://downloads.zend.com/phpide 和http://download.eclipse.org/tools/php/updates/。像图 4 这样添加 Zend 更新 URL。

在添加更新 URL 时,确保 PHP IDE 列表项是惟一选中的列表项,单击 Finish。Eclipse 现在查找可用的新特性,并显示如图 5 所示的对话框。

这显示出您添加的 URL 提供的可用特性。选中 PHP IDE 和 Zend 调试器特性。单击 Finish,Eclipse 将提示安装这些新组件。然后出现一个对话框,要求您接受这些新特性的许可协议条款和条件。选中 Accept 并单击 Next。在下一个对话框中会列出将安装的组件的列表。点击 Finish 继续安装。
在下载并安装组件时,进度对话框(见图 6)会提供在后台运行这个进程的选项,让您能够继续在 Eclipse 中工作。

在安装之后,Eclipse 显示图 7 所示的对话框以便重新启动来激活新的特性。

如图 8 所示,Eclipse 现在会在透视图对话框中显示两个新条目:PHP 和 PHP Debug 透视图。

PHP 和 PHP Debug 透视图图标看起来与 PHPEclipse 透视图(这里没有显示)不太一样,它们为 PHP 开发提供了一种新的布局。图 9 显示这个新的透视图。

在查看一个现有项目时,选择新的 PHP 透视图。您会注意到几个新的面板,比如 PHP Explorer、PHP Project Outline 和 PHP Functions。如果 Outline 面板没有显示您正在编辑的 PHP 文件中的任何函数,那么迁移项目可以纠正这个问题。
如果您按照第 3 部分 或第 4 部分 进行了操作,那么应该已经设置了一个 PHPEclipse 项目。为了利用 PHP IDE 透视图中的特性,需要对现有的项目文件(.project)做一些小改动,这个文件应该在 Eclipse 工作空间下的项目目录中。这是一个隐藏的文件,所以可以通过 File > Open 手工编辑它,或者在 Eclipse 之外的标准文本编辑器中编辑它。这个文件应该与清单 1 相似。
drudal.development net.sourceforge.phpeclipse.parserbuilder net.sourceforge.phpeclipse.phpnature
在这个 XML 文件的 buildSpec 和 natures 部分中,会看到对两个 PHPEclipse 类的引用。将这些类改为 PHP IDE 类,如清单 2 所示。
drudal.development org.eclipse.php.core.PhpIncrementalProjectBuilder org.eclipse.php.core.PHPNature
要想为 .module 文件(以及 .inc 和 .engine 文件)启用文本彩色显示,必须编辑 Eclipse 首选项。选择 Window > Preferences 打开 preferences 对话框。在左上角的 filter 字段中,输入 type 并在 General 下面选择 Content Types。选择 PHP Content Type。将会看到许多文件扩展名(.php、.php3、.php4 等等)。选择 Add 将 *.module 添加为文件关联。细节如图 10 所示。
在 preferences 对话框中,可以控制在开始调试文件时使用哪种浏览器。在 General / Web Browser 类别下面,可以选择要使用的浏览器 —— 外部浏览器或内部浏览器。如果选择外部浏览器,那么可以在已经安装的浏览器中进行选择。

现在,如果重新启动 Eclipse 应用程序,您的 PHP 项目应该能够利用全部 PHP IDE 特性,包括 Outline 面板。
Zend 调试器的另一个部分需要安装在 PHP 中,这样 Eclipse PHP Debug 透视图才能挥发作用。在前面提到的 Zend PHP IDE 项目页面的底部,有一个链接指向各种平台的 Zend 调试器扩展二进制文件,如图 11 所示。

点击这个链接,会显示针对相关平台的可下载文件列表,比如针对 Windows XP 的 ZendDebugger-5.2.1-Windows-i386.zip。下载这个文件并把它释放到一个临时目录中。按照 README 文件中的说明进行操作。对于 Windows,这意味着将动态链接库(DLL)放进 PHP 扩展目录(第 3 部分 中创建的 C:\php\ext)中,并用清单 3 中的额外代码更新 PHP 配置文件 php.ini。
zend_extension_ts=c:\php\ZendDebugger.dll. zend_debugger.allowed_hosts=localhost zend_debugger.expose_remotely=always
关于其他指令的说明,请参考core php.ini directives。
为了启用新的扩展,通常需要重新启动 Apache。




回页首
既然 PHP IDE 和 Zend 调试器的所有部分都已经就位了,就可以在 Eclipse 中使用当前的 Drupal 项目设置一个调试会话。为了能够看到调试器的运行情况,需要设置一个断点,在 HTTP 请求生命周期中将遇到这个断点。对于这个示例,我们将使用 index.php 文件。这是对 Drupal 发出请求时在服务器端调用的第一个文件。
打开项目中的 index.php 文件。通过双击代码行旁边的灰色空白边,就可以设置断点。将一个断点设置在启动 Drupal 引导过程的位置,如图 12 所示。

现在需要配置一个调试会话。点击 Eclipse 窗口中 bug 图标旁边的向下箭头(见图 13)并选择 Debug。

现在会显示调试配置对话框,如图 14 所示。单击左边面板中列出的 PHP Web page 条目,开始创建一个新的调试会话。

输入一个配置名称,比如 Watch a Drupal request。为了编辑服务器的细节,点击 Configure。现在会显示图 15 这样的对话框。

给服务器细节起一个名字;例如,Drupal development server。在 URL 字段中,输入第 3 部分 或第 4 部分 中定义的开发服务器和 Eclipse 工作空间的路径,并点击 OK。
回到调试配置对话框,在 File/Project 中输入第 3 部分或第 4 部分中定义的项目名称。一定要选中 Auto Generate。对话框看起来应与图 16 相似。

现在点击 Debug。Eclipse 将尝试切换到 PHP Debug 透视图。显示图 17 中的对话框。您可能希望选中 Remember my decision,这样就不会在每次运行调试会话时都出现这个对话框。

这个透视图看起来与图 18 相似。

当 HTTP 请求准备显示 Web 页面时,还会打开一个新的浏览器窗口。
debug 视图(见图 19)控制调试过程,并显示调试会话的数据跟踪和状态。可以使用顶部的控件停止、暂停、继续或者逐行执行代码。

在调试会话的过程中,图 20 中的 Variables 视图会提供代码定义的变量的列表。当调试会话在断点处暂停时,点击一个变量的值,就可以改变它的值。

按 F5 就会逐行执行代码。在对代码进行调试时,您会注意到,显示 PHP 文件的中间视图会将当前计算的代码行突出显示。在我们的示例中,在调试透视图显示之后马上按 F5,就会突出显示 bootstrap.inc 文件中 drupal_bootstrap 的第一行。如果希望越过 index.php 文件中对 drupal_bootstrap 的函数调用,那么可以使用 step over 操作(F6)。这会将您带到 index.php 文件中的下一行。
如果希望马上从 drupal_bootstrap 函数返回,而不必执行其余所有代码,直到到达末尾的 return,那么可以使用 step return 操作(F7)。
在调试会话期间发生的任何警告或错误都会出现在 Console 面板中。
在调试这个 HTTP 请求时,可以看到如何创建数据库连接,如何创建用户会话,如何定义 Drupal 变量,以及如何创建 Web 页面(这导致在 Web 浏览器中显示 Web 页面)。这是一个非常简单的示例,您可以利用它学习使用 PHP IDE 调试器。




回页首
在第 3 部分 中提到过,Eclipse 为在 CVS 中管理代码更改提供了出色的支持。本节展示我们在开发 IBC 站点时遇到的一些常见的使用场景。我们不打算深入介绍比较高级的 CVS 特性的细节(比如分支和合并),但是如果您希望使用这些特性,就可以在 Eclipse 中做这些工作。
在 Eclipse 中使用 CVS 的一般流程是:
创建一个 CVS 存储库连接。
导入或签出源代码。
对源代码进行修改。
将自己的更改与 CVS 存储库进行同步。
这四个步骤构成了 CVS 操作的核心,使开发人员能够协作开发他们的项目。我们首先讨论如何在 Eclipse 工作空间中添加新的 CVS 存储库连接。
打开 CVS Repository Exploration 透视图,屏幕应该看起来像图 21 这样。左边是 CVS Repositories 视图,它显示 Eclipse 所知道的所有 CVS 存储库。在 CVS Repositories 视图中右击,选择 New > Repository location,见图 22。


在打开的对话框中,可以输入 CVS 存储库的细节。在图 23 中可以看到这个对话框的一个示例,其中已经填写了所需的存储库信息。

我们填写了位置信息,包括服务器的主机名称以及服务器上包含 CVS 存储库的目录。输入您的用户名和密码;然后为这个 CVS 存储库选择连接类型。对于连接到 CVS 存储库,有两种流行的机制。一般采用图 23 中选择的 extssh,因为与其他连接类型相比,它更安全。第二种流行的机制是 CVS 提供的标准连接类型,它称为 pserver。如果您不知道应该选择哪种连接类型,那么请与系统管理员联系。
既然已经添加了 CVS 存储库连接,就该在 CVS 服务器上共享您的项目了。通过一个 Eclipse 向导很容易完成这个任务。在 Team 下面选择 Share Project 菜单项就可以打开这个向导,见图 24。

向导提示您选择一个将存储您的源代码的 CVS 存储库。选择我们刚才创建的那个存储库,并点击 Next,见图 25。

现在必须输入一个模块名称,用于在 CVS 服务器上标识这个项目。对话框应该与图 26 相似。选择 Use project name as module name,除非您由于特殊的原因要创建自己的模块,或者要使用现有的模块。

现在,提示您检查将导入 CVS 存储库中的代码。图 27 中的对话框让用户检查将发送到 CVS 存储库的每个文件和目录。确认一切正常,选中 Launch the Commit wizard,然后点击 Next。

Eclipse CVS 客户机会尝试猜测要发送到 CVS 存储库的文件中存储的内容类型。对于 PHP 源代码文件这样的文件,这是很容易的,因为它们是已知的文件类型。但有时候,您将文件导入 CVS,而 Eclipse 并不了解这种文件。当发生这种情况时,您可以帮助 Eclipse 对文件中的内容进行分类 —— 是文本数据,还是二进制数据。图 28 显示的对话框示例列出了 Eclipse 不了解的文件类型。在 Drupal 项目中,所有这些文件都是 ASCII Text,应该在 CVS 存储库中存储为 ASCII Text 形式。完成必要的修改之后,点击 Next。

图 29 显示导入过程中的最后一步。可以再次检查文件,还可以输入注释来描述提交的这些文件的内容和用途。在将更改提交到 CVS 存储库时,应该总是输入有意义的消息。输入了提交消息之后,点击 Finish。

既然已经将源代码放在 CVS 存储库中了,就可以进行任何必要的更改,同时保留以前的版本供比较和回归测试。在编写和测试了代码之后,可以将它提交给 CVS 存储库。下面讨论如何使用与存储库进行同步(Synchronize with Repository)方法将更新发送给 CVS 存储库,以及接收来自团队成员的任何更新。在某些情况下,更新或提交单一文件(而不是对整个项目进行同步)是有意义的。在描述如何将项目与 CVS 存储库进行同步之前,我们先来看看提交和更新单一文件。
在图 30 中可以看到,Team 菜单(通过右击项目中的文件或目录)提供了 Commit 和 Update 菜单项。选择 Commit 会将更改发送给 CVS 存储库,选择 Update 会从 CVS 存储库接收更改。在这两种情况下,CVS 都会尝试将您的版本与存储库中的版本进行合并。如果由于任何原因,CVS 无法合并您的文件版本与存储库中的文件版本,它会让您进行手工合并。(CVS 文档描述了这个过程。)

既然您和您的团队已经修改了代码,就需要向 CVS 存储库发送和接收这些更改。正如前面提到的,可以提交或更新单独的文件,但是如果做了许多更改,那么这样做的效率不高。发送和接收大量更改的正确方式是,使用 Team 菜单项 Synchronize with Repository。这会切换到 Team Synchronizing 透视图,可以在这里看到在本地计算机上的源代码版本与 CVS 存储库中的源代码版本之间存在哪些差异。图 31 显示 Synchronize with Repository 菜单项。

Team Synchronizing 透视图见图 32。这个透视图提供对更改的概述,并允许检查对单独文件的更改。在屏幕右边是 Synchronize 视图,其中包含需要同步的所有文件的清单。这个视图有四个模式,用来过滤要同步的文件。

图 33 显示激活这四个模式的按钮。

图 33 所示的四个模式是:
模式: 显示:
Incoming 在 CVS 存储库中有新版本的必须更新的文件
Outgoing 做了本地更改的必须提交给 CVS 存储库的文件
Incoming/Outgoing 在 Incoming 和 Outgoing 模式中都存在的所有文件
Conflicts 不能自动合并,需要手工干预的文件
确保处于 Incoming/Outgoing Mode,这样就能够看到您和您的团队成员所做的更改。可以通过文件的图标,判断文件是处于 outgoing 还是 incoming 状态。向右的灰色箭头表示 outgoing 更改,向左的蓝色箭头表示 incoming 更改。带加号(+)的箭头表示文件是新添加的,带减号(-)的箭头表示文件将被删除。不带加号或减号的箭头表示已经做了更改,箭头的方向表示在什么地方进行更改。图 34 给出了这些图标的示例。

既然已经理解了 Synchronize 视图中提供的信息,就必须对它执行操作。右击一个文件或目录,就会看到图 35 所示的菜单。

有两个常用的菜单项:
Update
对本地拷贝和存储库中的拷贝之间的差异进行合并
Commit
将本地更改提交给存储库
如果希望 CVS 自动地合并本地源代码文件和存储库中的文件,就使用 Update 菜单项。如果您对自己的本地文件做了更改,而另一个团队成员也对同一文件做了更改,而且已经向存储库提交了更改,就应该使用这个菜单项。在更新源代码文件之后,必须将更改提交回存储库。使用 Commit 菜单项将您的更改发送到存储库。如果您对自己的本地文件做了更改,而且别人没有向存储库中提交对同一文件的更改,那么就应该使用这个菜单项。


将这篇文章提交到 Digg

发布到 del.icio.us

提交到 Slashdot!

有时候,需要检查本地文件和存储库中的文件之间的差异。如果打开 Synchronize 视图中找到的任何文件,比较编辑器就会打开。图 36 和图 37 给出比较编辑器的示例。比较编辑器的左边显示本地源代码文件,右边显示存储库中的文件。当两者之间存在差异时,在两边都会在更改处显示方框。如果您了解了更改的内容,并认为更改是适当的,就可以使用 Synchronize 视图中的上下文菜单将自己的更改发送给存储库。






回页首
本文继续探索了 Eclipse 环境中的开发过程,学习了如何在开发过程中使用 Eclipse 简化代码的创建、调试、维护和部署。还学习了使用功能全面的调试器分步执行代码并检查 PHP 代码中的变量。还看到了使用 CVS 将自己的代码与其他团队成员的代码进行同步的示例。
本系列中的下一篇文章将回顾已经学过的一些知识,并讨论 Drupal 的第 5 版存在哪些进步。




回页首
使用开源软件设计、开发和部署协作型 Web 站点,第 13 部分: Eclipse 中的 ... 使用开源软件设计、开发和部署协作型 Web 站点,第 5 部分: Drupal 入门 使用开源软件设计、开发和部署协作型 Web 站点,第 14 部分: announcemen... 使用开源软件设计、开发和部署协作型 Web 站点,第 10 部分: 外部网 Web 站点的... 使用开源软件设计、开发和部署协作型 Web 站点,第 12 部分: 主机托管和部署 使用开源软件设计、开发和部署协作型 Web 站点,第 12 部分: 主机托管和部署 使用开源软件设计、开发和部署协作型 Web 站点,第 11 部分: 使用 Drupal 中... 使用开源软件设计、开发和部署协作型 Web 站点,第 8 部分: 使用 CSS 对主题化内... 使用开源软件设计、开发和部署协作型 Web 站点,第 1 部分: 简介和概述 使用开源软件设计、开发和部署协作型 Web 站点,第 4 部分: 在 Linux 中建立开... 使用开源软件设计、开发和部署协作型 Web 站点,第 2 部分: 设计有效的用户体验 使用开源软件设计、开发和部署协作型 Web 站点,第 6 部分: 在 Drupal 中构建... 使用开源软件设计、开发和部署协作型 Web 站点,第 3 部分: 在 Windows 中建... 使用开源软件设计、开发和部署协作型 Web 站点 用 Tomcat 和 Eclipse 开发 Web 应用程序 用 Tomcat 和 Eclipse 开发 Web 应用程序 .NET开发资源站点和部分优秀.NET开源项目 Eclipse在PHP开发中的使用 使用Ant进行Web开发(第二部分) 创建新的门户: 第 5 部分:开发、构建和部署门户 在eclipse的环境下使用wtp开发web service 使用Eclipse + MyEclipse开发Web Service的示例! 在eclipse的环境下使用wtp开发web service 使用 Eclipse 和 RDT 开发Ruby应用程序