Jul 6

[原]搭建Eclipse PDT开发CakePHP的环境 晴

linuxing , 14:14 , 编程 » Php , 评论(1) , 引用(0) , 阅读(24266) , Via 本站原创 | |
    Eclipse 是常见的开源IDE工具,通过增加插件,可用于PHP开发。下文参考CakePHP的bakery中一文:Setting up Eclipse to work with Cake,搭建一个Windows 7下面用于调试CakePHP的环境。特标注一些需留意的地方。

一、下载Eclipse PDT
Eclipse可用于开发PHP的插件有不少,其中部署最方便的是PDT(PHP Development Tools Project)。
官方网站:http://www.eclipse.org/pdt/
当前最新版本是2.2,基于Eclipse Platform 3.6.0.v2010060。
下载地址是:点击
操作系统中需先安装Java虚拟机,PDT本身不需安装,直接解压即可使用,例如:D:\Tools\eclipse
其他运行环境为:
引用
Windows 7
XAMPP 1.7.1(包括Apache 2.2、PHP 5.2.9、Mysql 5.0等)

二、Workspace环境
打开PDT后,首先会问你Workspace的路径:
点击在新窗口中浏览此图片
该路径应指向今后应用程序项目(project)存放的本地物理磁盘目录的位置。现我们使用的是XAMPP环境,为尽量减少需修改的配置,我们把Workspace定义到htdocs目录下。
以XAMPP默认路径为例,http.conf存放在D:\Tools\xampp\apache\conf,其中定义有:
引用
DocumentRoot "D:/Tools/xampp/htdocs"

所以,这也将会是我们的Workspace位置。当然,稍后,我们也可以在IDE中对其进行修改:打开File > Switch Workspace > Other。
定义Workspace后,我们就可以创建project项目了。打开File > PHP Project,会弹出一个向导:
点击在新窗口中浏览此图片
根据提示来完成。

为了解决中文字符的问题,需把默认的字符集GBK,改为UTF-8。右键点击对应的项目,然后选择Properties,修改为图中提示:
点击在新窗口中浏览此图片
保存即可。

三、配置PHP Debugger
IDE 的其中一个最大优势,就是提供Debugger工具,而可用于PDT的Debugger,有两个,分别是:ZendDebugger 和 XDebug。两者都可以免费使用,我这里都介绍一下,当然择其一即可。
1、ZendDebugger
这是由Zend提供的Debug工具,原包括在Zend Studio中,可作为PDT的插件来使用。
下载地址是:这里
我们已经有PDT环境,下载Zend Executable Debugger Eclipse Plug-in即可。
下载后,打开压缩包,把其中的目录解压到eclipse对应的目录下:
引用
D:\Tools\eclipse\features
D:\Tools\eclipse\plugins\org.zend.php.debug.debugger.win32.x86_5.2.15.v20081217

然后,修改PHP的php.ini,例如:D:\Tools\xampp\php\php.ini ,把:
引用
[Zend]
zend_extension_ts = "D:\Tools\xampp\php\zendOptimizer\lib\ZendExtensionManager.dll"

改为:
引用
[Zend]
;zend_extension_ts = "D:\Tools\xampp\php\zendOptimizer\lib\ZendExtensionManager.dll"
zend_extension_ts = "D:\Tools\eclipse\plugins\org.zend.php.debug.debugger.win32.x86_5.2.15.v20081217\resources\php5\ZendDebugger.dll"

然后重启Apache,ZendDebugger即可使用。

2、XDebug
其官网为:http://xdebug.org/,XAMPP已经自带了该库,但并没有激活。
当然,你也可以从官网上下载,例如php_xdebug-2.1.0-5.2-vc6.dll,然后把其放到php的ext目录下,如:D:\Tools\xampp\php\ext,最后才修改php.ini 。
因为Zend Optimizer与XDebug不兼容,所以,在启动XDebug前,必须把Zend Optimizer注释掉:
引用
[Zend]
;zend_extension_ts = "D:\Tools\xampp\php\zendOptimizer\lib\ZendExtensionManager.dll"
;zend_extension_ts = "D:\Tools\eclipse\plugins\org.zend.php.debug.debugger.win32.x86_5.2.15.v20081217\resources\php5\ZendDebugger.dll"

然后才能打开XDebug的注释项,最后结果为:
引用
[XDebug]
zend_extension_ts="D:\Tools\xampp\php\ext\php_xdebug.dll"
xdebug.remote_enable=true
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.remote_handler=dbgp
xdebug.profiler_enable=1
xdebug.profiler_output_dir="D:\Tools\xampp\tmp"

同样的,重启Apache后生效。

3、使用Debugger
假设我们已经在PDT中创建一个叫test的project。在其中建立一个php文件,内容为:

<?php
$i = 1;
$i++;
echo $i;
?>

并且在第三行设置一个断点,如图:
点击在新窗口中浏览此图片
接着,在文件浏览窗口中,右键点击对应的php文件,选择Debug As > PHP Web Page,如图:
点击在新窗口中浏览此图片
即会提示切换到Debug界面:
点击在新窗口中浏览此图片
确认后,可看到类似下面的PHP Debug界面:
点击在新窗口中浏览此图片
可见,断点设置已生效,可用于程序调试。

四、添加对.ctp视图文件的支持
CakePHP 1.2使用的View视图文件后缀是.ctp,我们需要在PDT中增加对其的识别:从Window > Perferences > General > Content types 中,在text > PHP content type 里面添加一项,结果如下:
点击在新窗口中浏览此图片
※ 注意,把Default encoding中也设置为utf8

五、添加bake脚本的支持
bake是CakePHP的其中一个不错的功能,若能在PDT中直接运行,将是一个不错的选择。实际上,PDT也考虑到编写PHP脚本的情况,所以,通过一些简单的配置,完全可以在PDT的console中运行bake脚本。
从菜单中选择Run > External Tools > Open External Tools Dialogue...,输入以下信息:
引用
Name: bake
Location: D:\Tools\xampp\php\php.exe
Working Directory: ${workspace_loc:/blog/cake/console}
Arguments:
cake.php bake -working ${workspace_loc:/blog/} -app ${workspace_loc:/blog/app/}

这里的值输入方式有很多,其中${workspace_loc: 表示当前Workspace目录。Location是脚本运行的路径,Working Directory是运行的当前目录(cake.php所在目录),Arguments 是运行时需要的参数。
※ cake.php中两参数的意思是:
引用
-working 应用的根目录,底下有cake、app、vendors 等目录
-app 应用根目录下的app目录位置

※ 注意:我并没有按照:bakery中的方法用cake.bat来配置,当然,你可以参考。
配置完成后,点击Run,可在console中看到脚本运行的状态:
点击在新窗口中浏览此图片

六、用于CakePHP的Eclipse插件
在使用CakePHP框架时,因为MVC的关系,经常需要在多个文件之间来回切换。Eclipse中的一个插件可以让这些工作轻便些。
下载地址是:http://opencakefile.sourceforge.net/
把下载后的文件org.xicabin.cakephp.opencakefile_1.0.0.jar,放到eclipse的插件目录D:\Tools\eclipse\plugins下,重启PDT即可生效。
因为该插件开发得比较早,故view视图是的默认后缀是*.thtml,我们可在Window > Preferences > Open Cake File中设定。
当打开CakePHP中某个control文件时,可通过快捷键Ctrl+Shift+; ,快速切换到model 或view 等视图。(或在工具栏中,选择对应的图标)
其他使用方式如下:(部分快捷方式我没有用出来)
引用
1. Open a CakePHP model file
2. Click 'Ctrl + Shift + ;' to switch to its controller file
3. Click 'Ctrl + O' to select an action
4. Click 'Ctrl + Shift + ;' to swtich to its view file
5. Click 'Ctrl + Shift + ;' to swtich to its model file
6. Click 'Ctrl + Shift + C' to swtich to its controller file
7. Click 'Ctrl + Shift + V' to swtich to its view file
8. Click 'Ctrl + Shift + M' to swtich to its model file
9. Select text like 'products/index' and Click 'Ctrl + Shift + V' to swtich to products's index view

七、添加Subversion支持
PDT默认使用CVS来进行版本控制,当然,也可以通过插件的方式支持Subversion。
从菜单中选择Help > Install New Software,在Work with中输入:
http://subclipse.tigris.org/update_1.6.x
把Subclipse展开后,选择全部组件:
点击在新窗口中浏览此图片
点击Next,接受License后,即会自动从网上下载对应的Subclipse组件(会提示Subclipse没有签名,确认即可),安装完成后,选择重启Eclipse。
Subclipse的使用一般有两种:
1、通过视图的方式
从Window > Open perspective > Other ..>中选择SVN repository exploring(SVN资源库研究)。
打开后,在左上方的窗口中,点击右键,选择“新建”>“资源库位置”,填入svn的地址即可:
点击在新窗口中浏览此图片
该方式主要用于从SVN中checkout资源出来,而下面的方式用于把项目添加或更新到SVN中。

2、添加项目到SVN中
右键点击某个项目,选择Team > Share project,选择SVN作为库的类型:
点击在新窗口中浏览此图片
然后输入SVN库的地址即可。结果如下:
点击在新窗口中浏览此图片

八、连接到Mysql
除了可以通过插件让PDT连接到subversion中,还可以连接到数据库上,我这里会使用QuantumDB。与Subclipse的安装方法类似,在Work with中输入:
http://quantum.sourceforge.net/update-site
根据情况,选择需安装的组件:
点击在新窗口中浏览此图片
安装完毕后,重启eclipse生效。
QuantumDB可用于管理多种支持Java连接的数据库,前提是,需要安装Java的连接库。
所以,需要从这里下载连接库后,把库mysql-connector-java-5.1.13-bin.jar放到eclipse的插件目录D:\Tools\eclipse\plugins下。
从Window > Open perspective > Other ..>中选择Quantum DB,然后在左边的窗口中,右键点击,选择New Bookmark > Add Driver > Add External Jar,找到Mysql 库的位置。
Class name中输入com.mysql.jdbc.Driver(或用Browse浏览)
Type中选择MySQL
如图:
点击在新窗口中浏览此图片
确认后,回到原来的Bookmark菜单,从Driver中选择刚创建的“MySQL-AB JDBC Driver”,然后输入连接到mysql 的信息:
点击在新窗口中浏览此图片
保存后,可看到类似的表信息:
点击在新窗口中浏览此图片
右上方的窗口可用于输入SQL查询语句,右下方的窗口是结果:
点击在新窗口中浏览此图片

九、附录
1、Zend Optimizer与XDebug 的冲突
如果在配置XDebug前没有Zend Optimizer关闭,Apache是不能成功启动的,在其后台error.log日志中,会提示:
引用
PHP Fatal error:  [Zend Optimizer] Zend Optimizer 3.3.3 is incompatible with Xdebug 2.1.0 in Unknown on line 0

2、Zend Debugger 与 XDebug 的配置问题
虽然,通常情况下,我们会从Zend Debugger 或 XDebug中择其一。但若在使用中途对Debug工具进行调整,可能会带来一些意想不到的问题。
这时,可试试修改一下默认配置,从Window > Preferences > PHP > Debug,把默认Debug工具改一下,如图:
点击在新窗口中浏览此图片
另外,PDT会自动保存已设置断点的文件配置,若前后使用的Debug工具不一致,需改过来。
可点击菜单工具栏中的小虫标记,并选择Debug Configurations:
点击在新窗口中浏览此图片
即可修改该配置使用的Debug工具:
点击在新窗口中浏览此图片
Tags: ,
DANNY
2010/10/13 08:57
請問版大,我用zend 來debug cake裡面的webroot/index.php都會出現Debug Strict (PHP 5): C:\AppServ\www\cake\libs\object.php line 54 - Redefining already defined constructor for class ObjectDebug Strict (PHP 5): C:\AppServ\www\cake\libs\inflector.php line 300 - Assigning the return value of new by reference is deprecatedDebug Strict (PHP 5): C:\AppServ\www\cake\libs\configure.php line 51 - Assigning the return value of new by reference is deprecatedDebug Strict (PHP 5): C:\AppServ\www\cake\libs\configure.php line 989 - Assigning the return value of new by reference is deprecatedDebug Strict (PHP 5): C:\AppServ\www\cake\libs\configure.php line 1036 - Assigning the return value of new by reference is deprecatedDebug Strict (PHP 5): C:\AppServ\www\cake\libs\configure.php line 1275 - Assigning the return value of new by reference is deprecatedDebug Strict (PHP 5): C:\AppServ\www\cake\libs\cache.php line 73 - Assigning the return value of new by reference is deprecatedDebug Strict (PHP 5): C:\AppServ\www\cake\libs\cache.php line 150 - Assigning the return value of new by reference is deprecatedDebug Strict (PHP 5): C:\AppServ\www\cake\bootstrap.php line 38 - Non-static method Configure::getInstance() should not be called staticallyDebug Strict (PHP 5): C:\AppServ\www\cake\libs\debugger.php line 187 - Assigning the return value of new by reference is deprecatedDebug Strict (PHP 5): C:\AppServ\www\cake\libs\debugger.php line 196 - Assigning the return value of new by reference is deprecatedDebug Strict (PHP 5): C:\AppServ\www\cake\libs\cake_log.php line 68 - Assigning the return value of new by reference is deprecatedDebug Strict (PHP 5): C:\AppServ\www\cake\libs\cake_log.php line 182 - Assigning the return value of new by reference is deprecatedDebug Strict (PHP 5): C:\AppServ\www\cake\libs\cake_log.php line 290 - Non-static method CakeLog::handleError() cannot be called staticallyDebug Strict (PHP 5): C:\AppServ\www\cake\libs\debugger.php line 707 - Non-static method CakeLog::handleError() cannot be called statically而且下了中斷點,在controller也不會停下來,請問可能是哪裡出了問題?請版大指點 謝謝
linuxing 回复于 2010/10/17 12:51
使用中,我也遇到相同的问题,这些似乎都是警告,但找了很多资料都没解决,cake官方也没有供参考的内容。不过,中断点是可用的,只是要不断的用F5跳过提示警告。
分页: 1/1 第一页 1 最后页
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]