【51CTO独家特稿】各位用户如果单独看NetBeans和Eclipse的市场占有率,你可能会认为使用其中任何一种IDE开发PHP应用程序都没有 问题,例如:
1、NetBeans:一款开源的集成开发环境,利用它可以创建桌面、企业级、Web和移动设备应用程序,支持Java, C/C++,甚至动态脚本语言PHP,JavaScript,Groovy和Ruby。NetBeans IDE安装简单,具有开箱即用的特性,可以再多 个操作系统上运行,如Windows,Linux,Mac OS X和Solaris。
2、Eclipse:它是建立在Equinox OSGi基础之上的开源项目,Eclipse从Java IDE开始不断发展,支持越来越多的语 言,包括静态和动态语言,厚客户端,瘦客户端和服务端框架,建模和业务报表,嵌入式和移动开发。它是目前最好的 Java IDE。
本文将使用NetBeans和Eclipse开发一个简单的Web应用程序,为一个虚拟书店开发的一个搜索组件,用户只需要输入 书名,作者或ISBN号,程序就可以从数据库中找出符合条件的结果。通过阅读本文,你会了解到NetBeans和Eclipse的 PHP特性,你还可以在它们之间进行对比,如果两者都满足你开发的需要,那你可以好好比较一下,看哪款IDE最适合你 。要实现前面说到的应用程序,需要用到一系列技术,包括HTML,JavaScript(Ajax),PHP和MySQL 5.0数据库。
需要用到的工具
NetBeans 6.5 for PHP
Eclipse PDT or Eclipse PDT 2.0
Java Development Kit (JDK) version 5 or 6
MySQL 5.0
PHP5
Apache HTTP Server 2.0
NetBeans IDE 6.5 for PHP介绍
我从NetBeans开始说起,首先从http://www.netbeans.org/downloads/index.html下载NetBeans,如图1所示。安装 时只需根据安装向导指引即可。
图- 1 下载NetBeans IDE 6.5 for PHP:在NetBeans下载页面点击PHP行
只要安装了Java运行环境(JRE)就可以运行NetBeans for PHP,不需要安装完整的JDK,NetBeans IDE for PHP的最 新版本是6.5,它包含了以下新特性:
1、PHP源代码编辑器
2、远程和本地项目开发
3、简化了代码导航操作
4、PHP调试(你可以检查本地变量、设置监视点、断点,评估代码的灵活性),NetBeans IDE for PHP也允许你使用 XDebug,可以任意选择一个调试器版本,但推荐使用XDebug 2.0,它和PHP 5.0具有更好的兼容性。
5、MySQL集成
创建PHP项目
为了实现一个PHP脚本/Web应用程序,你需要创建一个PHP项目根(一个空项目,仅包括通用的文件和目录)。无论是 哪种应用程序,IDE一般都是使用“项目”的概念,NetBeans为配置一个新项目提供了专用的向导,按照下列步骤创建一 个booksPHP示例应用程序:
1、启动NetBeans;
2、选择文件à创建一个新项目(将打开一个新建项目对话框);
3、从类别面板中选择PHP,从项目面板中选择PHP应用程序(你也可以选择载入一个PHP应用程序),点击下一步;
4、在这个对话框中输入项目名称和位置,这里输入booksPHP,在源文件夹字段选择一个方便的位置,点击下一步;
5、NetBeans支持在本地服务器(通常是Apache HTTP Server)上运行PHP应用程序,也支持在远程服务器上(通过 FTP)或作为PHP脚本(使用PHP解释器)运行,为了进行对比,你应该在Apache HTTP Server下运行booksPHP应用程序, 因此,从列表中选择本地Web站点,接下来在项目URL字段区域输入应用程序的URL,URL通常是类似 http://localhost/...的字符串,这个例子就应该是http://localhost/php/booksPHP/(当然你需要为你的配置对这个 URL做适当的调整),因为计划在本地服务器上运行项目,你需要提供一个运行位置好让NetBeans将应用程序代码拷贝到 那里,选择“从源文件夹拷贝到另一个位置”,在“拷贝到”区域指定目标位置(如C:\Program Files\Apache Group\Apache2\htdocs\php\booksPHP\),显然,仅当项目的根文件夹和本地服务器根文件夹不同时才需要这么做;
6、点击完成按钮关闭新建项目对话框。
如果你选择以脚本形式运行PHP应用程序,那你必须指定PHP解释器(PHP.exe)的位置,同样,如果你选择在远处服 务器上运行PHP应用程序,你必须指定一个有效的FTP连接,上传目录和上传方法。
至此,NetBeans就将项目生成好了,如图2所示。
图- 2 生成的项目:完成新建项目向导后,在NetBeans IDE中就会看到生成的项目根了
实现项目
项目创建好后,就可以开始实现booksPHP的功能了,在表现层需要一些HTML代码,一些Javascript代码实现Ajax,一 些PHP和数据库代码实现业务逻辑和持久任务,因为应用程序需要所有技术共同存在,你需要好好研究一下NetBeans是如 何处理每一种技术的(重点是PHP支持)。
创建HTML界面
这个项目的大部分HTML代码都驻留在index.php页面中,index.php由NetBeans创建项目根时自动创 建,你可以使用NetBeans的Palette工具往里面增加HTML元素,如果没看到这个工具,点击窗口àPalette菜单,Palette 提供了所有主要HTML元素的快捷方式,通过拖拉完成元素的选择操作。
在添加某些标签前,NetBeans要求你为其指定特殊的配置,如:当你拖动一个
图- 3 NetBeans代码助手:手动插入标签时代码助手提供帮助
#p#
添加Javascript Ajax代码
从清单1中得知index.php使用的Javascript模块叫做AJAXjs.js,这个模块包含了booksPHP应用程序的Ajax代码,在 NetBeans中,你可以参照以下步骤创建Javascript文件:
1、在项目视图中,展开booksPHP节点,在源文件节点上点右键;
2、选择新建à从上下文菜单中选择其它选项;
3、在新建文件向导中,从类别面板中选择“其它”项目;
4、在同一个对话框中,从文件类型面板中选择“Javascript文件”;
5、点击下一步按钮;
6、为新建的Javascript文件指定一个文件名(这里命名为AJAXjs);
7、点击完成按钮。
至此,在NetBeans编辑器中你应该看到一个空的Javascript文件,使用Javascript代码助手插入不言自明的代码,如 清单2所示。
清单2 Javascript Ajax代码
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
var checkTimeout = null;
var xmlhttp = null;
function searchAJAX(searchIndex){
var toSearch = document.getElementById("searchId").value;
var url = "search.php?findwhat=" + escape(toSearch) + "&findby=" + escape(searchIndex);
document.getElementById('bookanimID').innerHTML = "";
if(window.XMLHttpRequest)
{
xmlhttp = new XMLHttpRequest();
}else if (window.ActiveXObject){
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET", url, true);
xmlhttp.onreadystatechange=searchCallback;
xmlhttp.send(null);
checkTimeout = setTimeout("ajaxTimeout(xmlhttp);",120000);
}
function searchCallback(){
try{
if(xmlhttp.readyState==4)
{
if(xmlhttp.status==200)
{
clearTimeout (checkTimeout);
document.getElementById('bookanimID').innerHTML = "";
document.getElementById("resultsID").innerHTML = xmlhttp.responseText;
}
}
}catch(e)
{
alert("Unknown error!")
}
}
function ajaxTimeout(ajaxOBJ){
document.getElementById('bookanimID').innerHTML = "";
alert("Timeout!");
ajaxOBJ.abort();
}
实现PHP代码
为booksPHP项目实现PHP代码之前,先去http://www.netbeans.org/features/php/看一看NetBeans为PHP开发人员提 供的完整特性清单。在开发booksPHP时你可以研究清单中每一个特性,首先,创建一个search.php文件,这个文件中将 包括查询数据库的PHP代码,下面是具体的步骤:
1、在项目视图中,展开booksPHP节点,在源文件节点上点右键;
2、选择新建à在上下文菜单中选择PHP文件选项;
3、为php文件指定一个文件名(这里是search);
4、点击完成按钮。
NetBeans为创建php页面,类和接口提供了向导,都在新建的上下文菜单中。
现在在NetBeans编辑器中应该看到一个空的php文件,综合使用代码助手,语法和语义代码高亮显示,弹出式文档, 代码格式化和折叠,实例重命名,代码模板和自动代码完成(包括括号自动完成)等功能实现清单3中的代码。
清单3 PHP代码
<?php
require_once ('database.php');
$findwhat = "";
$findby = 1;
if(isset($_GET['findwhat'])) { $findwhat = $_GET['findwhat']; }
if(isset($_GET ['findby'])) { $findby = $_GET['findby']; }
//query the database
if ($findby == 1) //search by author
{
$res = mysql_query("select * from bookstore where author='".$findwhat."'", $id);
if (!$res) die("<error>Search failed!</error>".mysql_error ());
}
if ($findby == 2) //search by ISBN
{
$res = mysql_query ("select * from bookstore where isbn='".$findwhat."'", $id);
if (!$res) die ("<error>Search failed!</error>".mysql_error());
}
if ($findby == 3) //search by book
{
$res = mysql_query ("select * from bookstore where book='".$findwhat."'", $id);
if (!$res) die ("<error>Search failed!</error>".mysql_error());
}
$rows = mysql_num_rows($res);
if ($rows > 0)
{
$rowcolor = "#E1EBFB";
$xml = "<table border='0' align='center' style='table-layout:fixed;' width='700'>";
$xml = $xml."<tr>";
$xml = $xml."<td><font size='2' face='Arial' color='#000000'><b>Book name</b></font></td>";
$xml = $xml."<td><font size='2' face='Arial' color='#000000'><b>Author</b></font></td>";
$xml = $xml."<td><font size='2' face='Arial' color='#000000'><b>ISBN</b></font></td>";
$xml = $xml."<td><font size='2' face='Arial' color='#000000'><b>Price</b></font></td>";
$xml = $xml."</tr>";
while ($row = mysql_fetch_array($res))
{
if ($rowcolor == "#E1EBFB") { $rowcolor = "#95B3DE"; } else {$rowcolor = "#E1EBFB"; }
$xml = $xml."<tr bgcolor = '".$rowcolor."'>";
$xml = $xml."<td><font size='2' face='Arial' color='#000000'>".$row ['book']."</font></td>";
$xml = $xml."<td><font size='2' face='Arial' color='#000000'>".$row ['author']."</font></td>";
$xml = $xml."<td><font size='2' face='Arial' color='#000000'>".$row ['isbn']."</font></td>";
$xml = $xml."<td><font size='2' face='Arial' color='#000000'>".$row ['price']."</font></td>";
$xml = $xml."</tr>";
}
$xml = $xml."</table>";
} else {
$xml = "<table border='0' align='center' style='table-layout:fixed;' width='700'>";
$xml = $xml."<tr><td align='center'><font size='2' face='Arial' color='#cc0000'><b>No result found! </b></font></td></tr>";
$xml = $xml."</table>";
}
echo $xml;
?>
清单3中的代码使用了一个database.php文件,这是一个简单的php文件,它提供了一个到books数据库的连接,代码 如下:
|
#p#
创建数据库
前一小节的代码显示要使用到books数据库,你也可以使用NetBeans创建数据库:
1、启动MySQL数据库;
2、在NetBeans中切换到服务视图,如果看不到这个视图,请重窗口菜单中打开它;
3、展开数据库节点,导航到MySQL服务器节点,从上下文菜单中选择连接,如图4所示。
图- 4 连接到MySQL服务器:从NetBeans服务标签中可以找到和连接到数据库
如果你想配置MySQL的属性,在图4的上下文菜单中选择属性即可。
4、NetBeans建立好数据库连接后,在MySQL服务器节点下可以看到一串可用的数据库;
5、你也可以创建新的数据库,如果要创建books数据库,在MySQL服务器节点上点击右键,选择创建数据库选项;
6、在创建MySQL数据库对话框中,将数据库命名为books,并为访问用户授予全部访问权限,对所有用户使用 *@localhost,如图5所示。
图- 5 创建一个MySQL数据库:输入数据库名字,并选择你想要授予访问权的用户或组
填充数据库
books数据库创建好后,按照下列步骤进行连接,并创建一些示例数据:
1、在books节点(它应该在MySQL服务器节点下)上点击右键从上下文菜单中选择“连接”连接到新的books数据库;
2、在连接窗口中,在用户名处输入root,密码留空,点击确定,如图6所示。
图- 6 创建一个数据库连接:输入连接到books数据库的用户名和密码
3、NetBeans在数据库树中自动添加一个连接节点jdbc:mysql://localhost:3306/books;
4、展开jdbc:mysql://localhost:3306/books节点,在Tables上点击右键,从上下文菜单中选择创建表;
5、在创建表向导中,输入表名bookstore,并如图7所示指定其结构。
图- 7 创建表:使用创建表对话框定义bookstore表结构
6、点击确定;
7、在jdbc:mysql://localhost:3306/books节点上点击右键,从上下文菜单中选择执行命令;
8、打开一个SQL命令窗口,在这个窗口中,你可以使用一些记录填充bookstore表,输入并执行下列SQL语句,点击运 行SQL按钮:
insert into bookstore values (1, |
至此,数据库就准备好了,我们还是切换回项目视图。
#p#
从NetBeans运行booksPHP
现在可以运行和测试booksPHP应用程序了,确定MySQL和Apache HTTP Server处于运行状态,然后选择运行à运行项目 ,会启动一个Web浏览器,你会看到应用程序的界面如图8所示。
图- 8 运行中的booksPHP程序:这里是booksPHP在浏览器中的运行示例
安装Eclipse PDT for PHP
PDT项目为Eclipse平台创建了一个开源的PHP开发工具,运行PDT 2.0 for Eclipse必须安装JDK或JRE(最低版本要求 5.0),从http://www.eclipse.org/pdt/下载多合一软件包,如图9所示,将下载的zip包解压到合适的文件夹,然后运 行eclipse.exe安装软件包。
图- 9 下载PDT 2.0:点击下载按钮,并选择windows版本
使用Eclipse创建PHP项目
PHP开发工具项目(即PDT)提供了以下特性:
1、直观易学;
2、能与其它Eclipse项目无缝集成;
3、遵循Eclipse标准;
4、可扩展;
5、持续支持PHP开发;
6、支持XDebug和Zend Debugger,在修复php应用程序时提高生产力;
7、代码助手和语法加亮。
开发一个实例项目
这一小节将向你介绍使用Eclipse开发相同的booksPHP项目,这个过程与使用NetBeans相似,首先创建一个项目根:
1、启动Eclipse;
2、选择文件à新建à从上下文菜单中选择其它选项(弹出新建窗口);
3、展开PHP节点,选择PHP项目选项,点击下一步;
4、在新建项目对话框中输入项目名称booksPHP,目标PHP版本号,选择项目布局和Javascript支持设置(选择启用 Javascript支持),选中“从现有来源创建项目”单选按钮,因为你不想使用默认的工作空间,而是使用服务器工作空 间(这里是Apache HTTP Server),使用浏览按钮导航到你服务器的部署文件夹,其它全部使用默认设置,如图10所示 。点击下一步继续。
图- 10 新建Eclipse PHP项目:这里显示了使用Eclipse创建PHP项目根时要使用到的设置
注意:确定你选择的文件夹是空的,因为Eclipse可能会尝试关联所选择的部署文件夹中的所有文件和文件夹,对于 这个例子项目,将会在部署文件夹下创建一个空文件夹booksPHP。
5、在下一界面中,配置PHP包括路径,在这里你可以指定项目中包括的文件、工程和库,其它选项保持默认设置,点 击下一步;
6、在构建路径界面中你可以指定构建过程包括的资源,其它选项保持默认设置,点击完成按钮。
Eclipse生成booksPHP项目根,显示在Eclipse项目资源管理器视图中。
实现index.php — Eclipse风格
你已经看到index.html包括的内容,如清单1所示,因此现在你可以直接跳到实现了,Eclipse实现的步骤是:
1、在项目资源管理器视图中,在项目名称上点击右键,选择新建à其它选项;
2、在新建窗口中,展开Web节点,选择HTML,点击下一步;
3、在下一个界面中,指定文件名为index.html,点击下一步;
4、为初始化这个HTML页面选择一个模板,如New HTML file (4.01 transitional),点击完成。
Eclipse将会生产并自动打开index.html文件,按照NetBeans中的方法修改其内容(参见清单1),与NetBeans类似, 当你输入HTML元素时,Eclipse也提供了一个代码助手,如图11所示。
图- 11 Eclipse代码助手:这里显示了输入一个尖括号前半部分后弹出的代码助手
#p#
PHP透视图和视图
你可能已经知道,Eclipse使用了一套视图来支持不同的技术,每套视图叫做透视图,透视图和它们的视图之间的连 接是逻辑连接,因此你可以在透视图中显示任意视图,对于PHP,Eclipse提供了两种透视图:
1、PHP透视图:为开发阶段使用提供的一套视图;
2、PHP调试透视图:为调试阶段使用提供的一套视图。
你可以从“窗口à打开透视图à其它菜单”激活任意一种透视图,此时会打开一个包含所有可用的透视图的向导,选择 一个你想要的透视图,点击确定,这样就激活了PHP透视图,它将会显示下面的PHP专用视图:
1、PHP资源管理器:这个树状视图描绘了PHP应用程序;
2、PHP函数:这个视图包含了PHP核心函数列表,在一个函数上双击可以将其添加到你的PHP代码中,在函数上点击右 键,选择打开手册选项,会直接打开PHP手册并跳到对应的小节;
3、PHP项目大纲:对于一个大型项目而言,大纲视图非常有用,它包含三个部分:类、常量和函数;
4、参数堆栈:在调试过程中进入一个函数时显示其参数;
5、浏览器输出:显示浏览器输出内容;
6、调试输出:显示调试输出内容。
你可以从“窗口à显示视图à其它àPHP工具按钮”菜单激活任意一个视图,如在PHP透视图中激活全部视图,然后将它 们拖拉到适当的位置,如图12所示。
图- 12 激活PHP透视图:这个图显示了在PHP透视图中激活的视图
Eclipse会记住这些设置,因此图12中中的布局在下一次使用PHP透视图时将会显示同样的布局。
在Eclipse中实现booksPHP代码
正如你知道的booksPHP项目包括另外两个php页面database.php和search.php,在Eclipse中创建php页面的步骤如下 :
1、在项目资源管理器视图中,在项目名称上点击右键,选择新建à从上下文菜单中选择其它;
2、在新建窗口中,展开PHP节点,选择“PHP文件”,点击下一步;
3、在下一个界面中,设置项目的源文件夹位置,文件名输入database.php,点击下一步;
4、最后,为初始化内容选择一个模板,这里选择“New simple PHP file”和选项,点击完成。
在实现PHP代码时别忘了Eclipse的PHP视图和代码助手的用途。
实现AJAXjs.js — Eclipse风格
为了完成项目代码,你需要完成Javascript Ajax部分,在Eclipse中创建一个 Javascript文件:
1、在项目资源管理器视图中,在项目名称上点击右键,选择新建à从上下文菜单中选择其它;
2、在新建窗口中,展开Javascript节点,选择Javascript源文件项目,点击下一步;
3、在下一个界面中,指定文件名AJAXjs.js,点击完成。
Eclipse生成新的Javascript文件并在编辑器中打开,在输入代码之前,你应该知道Eclipse提供了一个Javascript透 视图和一套专用视图,可以从“窗口à打开透视图à其它àJavascript”菜单激活。
Eclipse提供了一个Javascript校验程序(通过窗口à参数选择àJavascriptà校验程序菜单激活),但我现在建议你还 不要使用它,因为目前这个校验程序在理解Javascript代码方面还存在问题。
在输入AJAXjs.js代码时,记住使用Eclipse的代码高亮和代码助手功能,如图13所示。
图- 13 Eclipse代码输入特性:你可以再这张图中看到代码高亮和代码助手特性
创建books数据库 — Eclipse风格
Eclipse PDT未提供数据库开发支持,但Eclipse有许多的插件来完成数据库开发,其中最著名的就是Eclipse Data Tools Platform(DTP),你需要了解DTP插件,新的数据库透视图可以帮助你开发books数据库,下面是安装DTP的步骤 :
1、从帮助菜单下选择软件升级;
2、切换到可用软件标签页;
3、在可用软件面板中,找到Ganymede Update Site条目,如果看不到这个条目,点击管理站点按钮,从列表中激活 它;
4、检查Ganymede Update Site条目等待它的列表被填充(如图14所示)。
图- 14 安装数据库开发透视图:在可用的软件面板中,找到Ganymede Update Site,选中它,会填充一个插件列表 ,在列表中你会发现Database Development.,选中它然后点击安装按钮开始下载并安装
5、选中Database Development前的复选框,点击安装按钮开始安装;
6、你将会看到一个如图15所示的对话框。
图- 15 Database Development条目:选中你想要安装的条目
7、选中所有的复选框,点击下一步,开始安装,安装过程这里就不详述了,只需要说明一点的是安装结束后需要重 新启动Eclipse。
成功安装了DTP后,就可以开始开发books数据库了,点击“窗口à打开透视图à其它à数据库开发”菜单启动数据库开 发透视图。
Eclipse需要专用的驱动连接数据库,如MySQL,PostgreSQL等,你可以下载MySQL Connector/J driver,它是MySQL 官方JDBC驱动,解压之后就会得到一个mysql-connector-java-5.1.7-bin Java归档文件,这个归档文件应该放在你的计 算机合适的位置,放在MySQL home文件夹是一个解决办法。
现在在左边面板中你应该看到数据源资源管理器(Data Source Explorer)视图了,因为你仅仅安装了DTP,还没有 创建任何数据库连接,下面就说一说如何创建MySQL数据库连接:
1、启动MySQL服务器;
2、在数据源资源管理器视图中,在数据库连接上点击右键,从上下文菜单中选择新建;
3、在新建连接配置文件向导中,从连接配置类型列表中选择MySQL,点击下一步,你可以为配置文件输入一个名字和 简单的描述信息;
4、接下来为MySQL选择一个驱动,因为默认没有配置,需要自己创建:
5、点击新建驱动定义图标,如图16所示。
图- 16 定义新的数据库驱动:点击新建驱动定义按钮定义和配置一个MySQL连接驱动
6、在新建驱动定义窗口中,在名称/类型标签页中选择“MySQL JDBC Driver for 5.0 system version”,如果你看 不到驱动模板,展开数据库节点;
7、切换到Jar标签页,从对应的列表中移除所有驱动文件(使用清除所有按钮);
8、点击添加JAR/Zip按钮,指定前面下载的MySQL Connector/J driver位置;
9、切换到属性标签页,如图17所示那样设置属性。
图- 17 驱动详细信息:在这里输入MySQL驱动的详细信息
10、点击确定;
11、点击完成。
如果没有遇到错误,你应该看到如图18所示的数据源资源管理器。
图- 18 新建数据库连接:添加MySQL驱动并配置好后,在数据库连接节点下显示了新建的连接
你需要执行一些SQL语句才能完全创建好books数据库、bookstore数据表并填充一些数据,在MySQL_books连接上点击 右键,选择打开SQL剪贴簿,启动SQL编辑器,在这里你可以输入/插入SQL语句,如图19所示。
图- 19 创建并填充books数据库:这是在Eclipse中SQL剪贴簿中创建并填充books数据库的SQL语句
将其保存为books.sql文件,放在项目根下。最后执行这个SQL语句,切回到PHP透视图,在PHP资源管理器视图中,展 开booksPHP节点,在books.sql上点击右键,从上下文菜单中选择执行SQL文件,在SQL结果视图中显示了SQL执行状态, 你可以通过“窗口à显示视图à其它à数据管理”来激活它。
运行booksPHP — Eclipse风格
运行应用程序非常简单,首先,确定Apache HTTP Server和MySQL服务器处于正确的运行状态,接下来在PHP资源管理 器视图中选择index.php,然后选择运行à以...运行àPHP Web页面,将会提示URL地址(这里应该是 http://localhost/php/booksPHP/index.php),接着就可以在浏览器中看到程序的样子了。
还要提两件事情:首先,本文不是NetBeans和Eclipse开发PHP应用程序的对比文章,至于选择那个IDE,这个问题我 还是各位读者自行去选择。第二,我有意地跳过了调试,因为这个话题太大了。
本文的目的是向你呈现NetBeans和Eclipse在开发PHP应用程序方面的特性,如创建新项目,使用自动完成,连接到 MySQL数据库,直接从IDE创建和修改数据库,部署和运行PHP应用程序等,无论你选择哪个IDE,你会发现它都会提高你 的开发能力。
booksPHP应用程序NetBeans和Eclipse的源代码下载地址: http://assets.devx.com/sourcecode/41689_oa_mainsource.zip。
【编辑推荐】