安装 Eclipse 的 PHP Development Tool(PDT)
到 编写本文时,PDT 只是候选插件,还不是完整发布的 Eclipse 平台插件。执行以下步骤来安装和配置 Eclipse PDT。(从 Eclipse 和 Zend Web 站点都可以获得 PDT。Zend Web 站点提供的版本与 Eclipse Web 站点相同,但是增加了 Zend 的 PHP 调试工具。)
- 通过 参考资料 一节中的链接,访问 zend.com 上的 Eclipse PDT 下载页面。
- 下载 Version 0.7 RC3 或更高版本,并将 .zip 文件存储在 c:\temp\dw-ajax 目录中。(例如,pdt-0.7.0.S20070401-RC3_debugger-0.1.7-all-in-one-win32.zip 或更高版本。)
- 如果要安装 pdt-0.7.0.S20070401-RC3 之外的 PDT 版本,那么在下面的步骤中要换用正确的版本号,还要改变 清单 1 中的 Zend 调试器目录名。
- 将 Eclipse PDT Zip 文件解压到 c:\(例如,unzip.exe pdt-0.7.0.S20070401-RC3_debugger-0.1.7-all-in-one-win32.zip -d c:\。这应该会建立一个称为 c:\eclipse 的目录,其中包含 PDT 文件。)
- 创建一个 Eclipse 工作区目录(例如,md c:\eclipse\workspace)。
- 用 MySQL 库配置 PDT:
- 通过 参考资料 一节中的链接,访问 MySQL PHP 连接器 Web 站点。
- 单击 mysqli 扩展(PHP 5.2.0)的链接。
- 下载 .zip 文件(例如,php_5.2.0_mysqli_5.0.27-win32.zip),将它存储在 c:\temp\dw-ajax 目录中。
- 将 .zip 文件解压到 c:\eclipse\plugins\org.zend.php.debug.debugger.win32.x86_0.1.7\resources\php5 目录中(Unzip.exe php_5.2.0_mysqli_5.0.27-win32.zip -d C:\eclipse\plugins\org.zend.php.debug.debugger.win32.x86_0.1.7\resources\php5)。
- 编辑 C:\eclipse\plugins\org.zend.php.debug.debugger.win32.x86_0.1.7\resources\php5\php.ini 文件,将这个文件中的所有内容替换为 清单 1 中的内容。做以下修改并保存文件:
- 在替换 php.ini 文件的内容之后,合并 [Zend] 部分下面的前两行,如下所示:extension_dir=C:\eclipse\plugins\org.zend.php.debug.debugger.win32.x86_0.1.7\resources\php5
- 如果需要,根据 Eclipse 安装中的 Zend 调试器目录名修改它。
- 转到 c:\eclipse 目录并输入 eclipse.exe 来启动 Eclipse。
- 在 Workspace Launcher 对话框中,将工作区改为 c:\eclipse\workspace 并单击 OK。
- 关闭 Eclipse IDE 中的 Welcome 选项卡。
- 在 Eclipse IDE 中,选择 Window->Open Perspective->Other,选择 PHP 并单击 OK。
- 在 IDE 左下角,选择 PHP Functions 视图。确保能够看到内置的 PHP 库函数的列表。
- 在 Eclipse 中,单击 Window->Preferences:
- 展开并选择 PHP->Debug。
- 选择 Break at First Line 复选框并单击 Apply。
- 在相同的 PHP Debug 页面上,选择 Debug Options 部分中的 PHP Servers ...。
- 在列表中,选择 Default PHP Web Server 并单击 Edit。
- 选择 Publish Projects to this Server 复选框。
- 在 Directory 域中,浏览到 c:\Program Files\Zend\Apache2\htdocs 并单击 OK。(见 图 3。)
- 单击 OK。
- 再次单击 OK 关闭 Preferences 对话框。
- 选择 Window->Web Browser->Firefox。
|
; Remember to merge the first two lines below the [Zend] section ; to appear in one line. ; Otherwise, Eclipse PDT (PHP Development Tool) will not work properly. ; If needed, modify it with the correct Zend debugger directory name ; as in your Eclipse installation.
[Zend] extension_dir= C:\eclipse\plugins\org.zend.php.debug.debugger.win32.x86_0.1.7\resources\php5 include_path="." extension=php_mysqli.dll zend_extension_ts=.\ZendDebugger.dll zend_debugger.allow_tunnel=127.0.0.1/32 zend_debugger.allow_hosts=127.0.0.1/32 zend_debugger.expose_remotely=always
|
安装 Aptana Web IDE 只需在前面安装的 Eclipse PDT 中添加一个插件。在编写本文时,Aptana Web IDE 的版本是 0.2.8.14433。执行以下步骤来安装 Ajax 开发所需的 Aptana Web IDE 的最新版本:
- 在 Eclipse 的 Help 菜单中,选择 Software Updates->Find and Install...,这会打开 Install/Update 弹出窗口。
- 在 Install/Update 弹出窗口中,选择 Search for new features to install 选项并单击 Next。
- 为了设置新的远程更新站点,单击 New Remote Site... 按钮,这会打开 New Update Site 弹出窗口。
- 在 New Update Site 弹出窗口中,在 Site Name 文本框中输入 Aptana。
- 在 URL 文本框中,输入 Aptana 更新站点的 URL:http://update.aptana.com/install/3.2/ 并单击 OK。
- 单击 Finish 打开 Updates 窗口。
- 在 Updates 窗口中,选择 Aptana update 复选框并单击 Next。
- 接受许可协议的条款并单击 Next。
- 单击 Finish。
- 如果出现 Feature Verification 对话框,那么选择 Install All。
- 如果提示您重新启动 Eclipse,单击 Yes 进行重新启动。
- 在 Eclipse IDE 中,选择 Window->Open Perspective->Other,选择 Aptana 并单击 OK。如果出现 Aptana 透视图,就说明安装已经完成了。
如果你网络很差,Eclipse自动下载插件安装会非常慢,建议自己手动下载,下载后手动安装,步骤如下:更多资料请直接访问:http://update.aptana.com/install/3.2/
- Save the above file to an easy-to-find location.
- Open Eclipse distribution, goto Help -> Software Updates -> Find and Install...'
- Search for new features to install -> Next -> New Archived Site... -> Select the file saved in step 1
- Select the entry for the plugin's update site -> Finish
- Select the appropriate plugins to install -> Next -> Accept -> Next
- Change location... -> If no appropriate location is already available -> Add Location (something like D:\dev\extensions\pluginname, eg. extensions\aptana)
- Finish
如 果到目前为止所有操作都正常,就已经设置了完整的 Eclipse IDE,可以使用它开发、测试和调试银行场景应用程序的工件,比如 XHTML、JavaScript、XHR、PHP 和 MySQL 代码。还可以配置 Eclipse IDE 来使用 Zend Core PHP 服务器。Eclipse 和 Zend Core 的高效组合能够满足所有 Ajax 开发和部署需求。现在,我们来考虑一个比较复杂的场景,我们将在这个强大的环境中开发和部署这个场景。
图 4 描述一个比较复杂的场景,它在一个 Ajax-PHP 环境中提供与银行相关的某些功能。这个场景介绍一些技术组件,并按照传统的体系结构划分成以下三层:
- 客户端
- 中间层
- 数据层
在 客户端,这个场景使用基于浏览器的控件,这些控件是通过单页面 XHTML 用户界面元素以及 XHR 和 JSON 启用的。在中间层,它使用 PHP 技术,比如 SimpleXML、Services_JSON、HTTP 请求处理程序和 PHP SOAP 客户机。在数据层,它使用 SQL 和 ODBC。
还可以根据应用的技术组件划分这个场景:
- 浏览器
- PHP 服务器
- PHP Web 服务客户机
- 数据库服务器
- 互联网上驻留的基于 .NET 的第三方 Web 服务
可 以看到,这个场景满足 Ajax 环境的基本因素和重要因素。在众多的技术解决方案中,将选择一种特殊的实现方式,从而帮助您从这个场景获得尽可能多的收获。总的设计目标是不要让场景复杂化,所以在客户端上不提供不必要的浮华的屏幕。我希望让您更轻松地理解在 Eclipse IDE(PDT 和 Aptana)和 Zend Core 中开发和部署各种场景工件所涉及的细节。另外,这个场景还从 PHP Web 服务客户机访问互联网上驻留的一个基于 .NET 的真实的 Web 服务,以此演示互操作性。正如前面指出的,为了将注意力放在所选的开放源码软件的核心功能上,这个场景没有考虑安全性、可伸缩性和可用性特性 —— 您应该通过其他资料学习这些特性。
在阅读下面几节时,请参考 图 4 来理解场景的细节。这个场景主要在 Ajax 和 PHP 环境中实现几个常用的银行出纳功能。本节描述组成这个场景的各个模块。
银 行的客户信息保存在一个数据库表中。我将在 MySQL 数据库中创建这个表。它是一个紧凑但强大的社区版服务器。对于本系列的场景,所有客户数据将同时填充进数据库表中。在此之后,可以通过 Zend Core 提供的 ODBC 驱动程序获取和更新存储的客户数据。数据库访问的类型(比如读或写)将根据银行出纳功能的性质决定。
现在,考虑提供银行出纳功能所需的核心银行逻辑。在这个场景中,需要支持下面的银行出纳功能:
- 获得银行中所有客户的帐户信息。
- 在特定的帐户中存款。
- 从特定的帐户中取款。
- 为特定的帐户提供经过整理的资产报告。
因 为这四个功能都需要访问数据库,所以创建一个 PHP 文件来提供必需的数据库功能。它将数据库功能与其他中间层逻辑隔离开。通过以这种方式提供核心的银行出纳功能,就可以向这些功能的所有调用者提供以一致的方式包装的数据库结果。一个 PHP 关联数组用来传递核心银行逻辑的结果。
Bank Portal 用户界面(Ajax)—— 视图
现在,考虑为银行出纳员提供执行四个核心功能的用户界面。可以通过胖客户端或瘦客户端访问 PHP 代码中封装的核心银行逻辑。这个场景为银行出纳员开发一个单页面的 Ajax 浏览器用户界面。
在 中间层上使用 PHP 时,一种常见的做法是用 PHP 代码输出必需的 XHTML、CSS 和 JavaScript。在这个场景中,我们完全不用 PHP 代码输出任何客户机用户界面代码。这意味着与 Bank Portal 相关联的所有代码都只在客户机启动时提供。我们将用 XHTML 和 CSS 编写所有用户界面元素,用 JavaScript 编写客户端逻辑。这些工件(XHTML、CSS 和 JavaScript)共同产生所有用户界面元素,可以满足银行场景中 Bank Portal 的需求。这意味着,Apache Web 服务器只需要向浏览器传递一次客户机用户界面内容。这个一次性的代码传递过程发生在银行出纳员访问这个应用程序的 URL 时。在此之后,Bank Portal 客户机只会为了交换数据而与服务器进行通信,而不是为了获取 XHTML、CSS 和 JavaScript 等表示内容。
这就摈弃了传统的单击并等待 范例;在传统范例中,对于每次用户操作,浏览器都会与中间层服务器进行通信来下载表示内容。单页面 Ajax 应用程序的杰出特性之一是,在启动时下载一次表示内容,之后就不需要再从服务器获取页面。在启动之后,单页面 Ajax 客户机应用程序与中间层服务器逻辑进行通信,只是为了进行应用程序特有的数据交换。因此,中间层逻辑会更紧凑,它只关注业务逻辑,而不需要承担向浏览器传递表示内容的责任。这种方式可以更好地隔离应用程序层,产生干净优雅的 Web 应用程序设计。
Bank Actions 模块(PHP 代码)—— 控制器
讨 论了浏览器用户界面之后,就应该考虑如何通过网络执行银行出纳员选择的银行操作。在这个场景中,将出纳员选择的 Bank Action 命令和所需的输入数据发送给一个 PHP 代码模块,这个模块作为浏览器和(前一节描述的)PHP 模块中的核心银行逻辑之间的代理/中间人。Bank Actions PHP 模块支持以 REST 风格调用中间层中的服务功能。Bank Actions PHP 模块接收 Bank teller Action 命令并对 Bank Logic PHP 模块进行调用来获得所需的结果。调用适当的银行逻辑来访问数据库并获得结果。Bank Logic 模块返回之后,Bank Actions 模块将结果以 JSON 格式传递给浏览器。总之,Bank Actions PHP 模块是银行出纳员请求的调度器,它调用适当的 Bank Logic 功能来处理这些请求。
XML Web 服务客户机(从 PHP 对 .NET 服务进行 SOAP 访问)—— Helper
除 了作为代理/中间人之外,Bank Actions PHP 模块还作为一个 PHP Web 服务 SOAP 客户机,它可以获得特定客户的投资组合中当前股票的价值。这可以帮助您学习如何用 PHP 生成 Web 服务客户机。在这个场景中,Bank Actions PHP 模块对一个在互联网上运行的真实的远程 Web 服务进行 SOAP XML Web 服务调用。这个 Web 服务是一个基于 .NET 的 Web 服务,这可以让您体会一下 PHP 的互操作特性。您还会学到使用 PHP SimpleXML API 进行 XML 解析的知识。
现在,您应该对这个场景的高层设计目标有了清晰的认识。这一概述应该足以帮助您开发、测试、集成和部署银行场景中的核心模块。
在这个文章系列的第 2 部分和第 3 部分中,将执行以下任务来完成这个场景,使它达到可运行的状态,并讲解在 Eclipse IDE 中开发它以及在 Zend Core 中部署它的底层技术:
- 任务 1:创建一个数据库表来保存银行客户帐户信息。
- 任务 2:创建一个 PHP 代码模块来执行必需的业务逻辑和数据库调用。
- 任务 3:创建 XHTML 和 CSS 工件来提供单页面 Ajax Web 用户界面。
- 任务 4:创建一个 JavaScript 模块,它包含所有客户端逻辑和异步通信逻辑,用来与服务器进行数据交换。
- 任务 5:创建一个 PHP 代码模块,它包含针对一个远程股票报价 Web 服务的 Web 服务 SOAP 客户机代码。
- 任务 6:创建一个 PHP 代码模块,它将作为 REST 服务,将调用转发给另外两个 PHP 文件中的业务逻辑。
- 任务 7:将所有工件集成起来,部署并运行为银行场景创建的 Ajax 解决方案。
简 单和低成本促使革命性的 Web 平台在世界各地的广大用户中流行起来了。尤其是,开放源码的 Eclipse 工具和 Zend Core 一起提供了很大的功能,使各个组织开始考虑从 .NET 环境这样的专有平台迁移到开放源码平台。对于这些客户,这些软件提供了一个出色的零成本的开发和部署环境,并且可以与现有的专有基础设施共存。在本系列的第 2 部分中,您将体会真实而有趣的 Ajax-PHP 开发。在学习第 2 部分之前,请尽量熟悉 Eclipse PDT、Aptana 插件和 Zend Core 运行时的特性。
学习
- 您可以参阅本文在 developerWorks 全球站点上的 英文原文 。
- 阅读 developerWorks 上 Ajax 技术资源中心 中关于 Ajax 的文章和教程。
- 阅读 developerWorks 上 PHP 资源中心 中关于 PHP 的文章和教程。
- 阅读 PHP Manual Web 站点 上的 PHP API 文档。
- 了解 Eclipse PDT 项目。
- 了解 Aptana Web IDE。
- 阅读 Jesse James Garrett 所写的 “Ajax: A New Approach to Web Applications”,他在这篇文章中首创了 Ajax 这个词。
- 进一步了解 Zend Core。
- 阅读关于 XMLHttpRequest 的 W3C Working Draft。
获得产品和技术
- 从 Mozilla 下载 Web 站点 下载 Mozilla Firefox 浏览器。
- 从 MySQL 下载 Web 站点 下载 MySQL 数据库服务器。
- 从 Zend 下载 Web 站点 下载 Zend Core。
- 从 Zend PDT 下载 Web 站点 下载 Eclipse PDT(PHP Development Tools)。
- 从 MySQL 连接器下载 Web 站点 下载 MySQL PHP 连接器。
关于原作者:
Senthil Nathan 是位于纽约 Hawthorne 的 IBM T.J. Watson Research Center 的一位高级软件工程师。在为不同类型的企业应用程序构建软件方面,他有 22 年经验。他当前感兴趣的领域包括 SOA、Web 服务、Java 2 Platform, Enterprise Edition(J2EE)、PHP、Ruby On Rails、Web 2.0 和 Ajax 开发。



续1:开发端到端的 Ajax 应用程序,第 1 部分 用一个场景设置 Ajax 环境

安装 Aptana Web IDE
guitar_men
