五个PHP程序员工具


Posted in PHP onMay 26, 2008

Phing - 一个项目构建系统
Phing 是一个基于Apache ANT 的项目构建系统。它的名字是一个拗口的语句首字母缩写 - PHing Is Not GNU make 。Phing可以做传统构建系统比如 GNU make 能做的任何事情,同时没有陡峭的学习曲线。

在phing(以及其他的构建系统)背后的思想是评估一系列相关性,然后执行一系列PHP类去正确的安装和配置一个应用系统。构建过程用一个简单的XML配置文件控制。Out of the box, phing内置可以执行一系列替换(比如:在你的开发版本和产品版本间改变include路径)、执行SQL语句、移动和复制文件、运行外部脚本等等。通过扩展包含在发行包中的“task”类,你也可以创造自己的定制任务。

对任何需要在超过一台服务器上部署大型PHP应用的人来世,Phing是一个无价之宝。同时我发现它对简单的PHP脚本也是很有用的。

Xdebug - 调试和分析工具
Xdebug 是帮助你调试和分析脚本的一个PHP扩展。Xdebug中最有用的特性是在激活后显示的新注意信息、警告信息和错误信息。如果一个脚本不能正常运行,Xdebug将会输出关于错误信息的完整堆跟踪 ,会附带函数名称、参数值、源文件和行号。这对于厌倦了PHP默认只带的可怜的错误报告功能的程序员是一个值得欢迎的特性。

这个扩展有很多更先进的功能,允许开发人员进行代码覆盖率分析,收集分析信息以及交互式地调试脚本。profiling functionality 功能尤其有用。分析器使用一个普通的输出文件格式,允许你使用象 KCacheGrind 这样的工具快速发现你代码中的瓶颈。对任何严肃的开发人员而言,一个好的分析器是基本工具,它使得你妥善优化你的代码,同时避免过早优化带来的危害。

PHPUnit - 单元测试框架
PHPUnit 是一个轻量级的PHP测试框架。它是在PHP5下面的 JUnit 3.8.1 完整移植,是xUnit 测试框架家族的一员(它们基于软件模式 先锋 Kent Beck 的设计)。

单元测试是几个现代敏捷开发方法的基础,使得PHPUnit成为许多大型PHP项目的关键工具。这个工具也可以被前面讨论的Xdebug扩展用来生成代码覆盖率报告 ,并且可以与phing集成来自动测试。

Propel - ORM(对象关系映射)框架
Propel是一个PHP5下面的对象关系映射(ORM)框架,它起源于Apache Torque项目。它提供了一个复杂但是易用的数据库抽象层,使得你可以在PHP中象使用普通类和对象一样得使用数据库实体。Propel允许你使用一种简单的XML格式定义你的数据库,这个XML文件被用来映射数据库,生成应用中使用的静态类。 

Propel被内嵌于流行的Symfony PHP框架 (还有其他的),它使得代码更灵活、模块化以及可移植。这个项目有The project has 出色的文档,以及很棒的支持社区。

phpMyAdmin / phpPgAdmin - 基于web的数据库管理系统
历史有点长可是还是很有用,phpMyAdmin是对于任何数据库(对应PostgreSQL和SQLite是phpPgAdmin 和 phpSQLiteAdmin)最有用的管理工具之一。它有助于做每一件事情 - 从为了调试应用去创建和删除数据库到做备份。安装它通常是我在一个LAMP服务器上面安装完 Apache, PHP和MySQL后做的第一件事情。如果你使用MySQL,不知何故还没听说过它,那么现在就安装 。

其他工具
还有很多优秀的工具用以符合各种需要,帮助PHP开发者创建一个丰富的开发环境 — 我希望我可以说到所有这些工具。我发现对自己有用的工具有PHP Beautifier, Spyc, Creole和Smarty。我确信还有很多我忘记或者没听说过的有用工具。因此,如果你知道某个我遗漏的PHP开发伟大工具,请留言让我(以及所有人)知道!

PHP 相关文章推荐
PHP mb_convert_encoding 获取字符串编码类型实现代码
Apr 26 PHP
下拉列表多级联动dropDownList示例代码
Jun 27 PHP
php文件夹与文件目录操作函数介绍
Sep 09 PHP
PHP获取中英混合字符串长度的方法
Jun 07 PHP
php实现简单的语法高亮函数实例分析
Apr 27 PHP
使用URL传输SESSION信息
Jul 14 PHP
php、java、android、ios通用的3des方法(推荐)
Sep 09 PHP
如何使用php等比例缩放图片
Oct 12 PHP
PHP实现更改hosts文件的方法示例
Aug 08 PHP
Django中通过定时任务触发页面静态化的处理方式
Aug 29 PHP
Yii2.0框架模型多表关联查询示例
Jul 18 PHP
PHP+ajax实现上传、删除、修改单张图片及后台处理逻辑操作详解
Feb 12 PHP
需要使用php模板的朋友必看的很多个顶级PHP模板引擎比较分析
May 26 #PHP
JS实现php的伪分页
May 25 #PHP
php中iconv函数使用方法
May 24 #PHP
在PHP中使用模板的方法
May 24 #PHP
php读取数据库信息的几种方法
May 24 #PHP
php循环输出数据库内容的代码
May 24 #PHP
开源SNS系统-ThinkSNS
May 18 #PHP
You might like
Smarty+QUICKFORM小小演示
2007/02/25 PHP
PHP使用socket发送HTTP请求的方法
2016/02/14 PHP
脚本吧 - 幻宇工作室用到js,超强推荐base.js
2006/12/23 Javascript
jquery BS,dialog控件自适应大小
2009/07/06 Javascript
jQuery去掉字符串起始和结尾的空格(多种方法实现)
2013/04/01 Javascript
Javascript验证上传图片大小[前台处理]
2014/07/18 Javascript
jQuery 删除或是清空某个HTML元素示例
2014/08/04 Javascript
推荐10个2014年最佳的jQuery视频插件
2014/11/12 Javascript
jquery动态添加删除(tr/td)
2015/02/09 Javascript
Bootstrap 3的box-sizing样式导致UEditor控件的图片无法正常缩放的解决方案
2016/09/15 Javascript
JavaScript中的工厂函数(推荐)
2017/03/08 Javascript
JS解决移动web开发手机输入框弹出的问题
2017/03/31 Javascript
Vue调试神器vue-devtools安装方法
2017/12/12 Javascript
JavaScript伪数组用法实例分析
2017/12/22 Javascript
nodejs的路径问题的解决
2018/06/30 NodeJs
vue组件开发之用户无限添加自定义填写表单的方法
2018/08/28 Javascript
微信小程序实现的动态设置导航栏标题功能示例
2019/01/31 Javascript
详解VUE Element-UI多级菜单动态渲染的组件
2019/04/25 Javascript
js实现轮播图特效
2020/05/28 Javascript
toString.call()通用的判断数据类型方法示例
2020/08/28 Javascript
[51:11]2014 DOTA2国际邀请赛中国区预选赛5.21 LGD-CDEC VS DT
2014/05/22 DOTA
[34:27]DOTA2上海特级锦标赛B组败者赛 VG VS Spirit第一局
2016/02/26 DOTA
[01:03:47]VP vs NewBee Supermajor 胜者组 BO3 第一场 6.5
2018/06/06 DOTA
[59:48]LGD vs IG 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
[51:32]Optic vs Serenity 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
python中lambda函数 list comprehension 和 zip函数使用指南
2014/09/28 Python
在Python中封装GObject模块进行图形化程序编程的教程
2015/04/14 Python
浅谈tensorflow1.0 池化层(pooling)和全连接层(dense)
2018/04/27 Python
pycharm配置当鼠标悬停时快速提示方法参数
2019/07/31 Python
详解python中的生成器、迭代器、闭包、装饰器
2019/08/22 Python
教师年度考核自我鉴定
2014/01/19 职场文书
《我的信念》教学反思
2014/02/15 职场文书
科学发展观演讲稿
2014/09/11 职场文书
二人合伙经营协议书
2014/09/13 职场文书
初婚未育证明样本
2015/06/18 职场文书
2016年元旦寄语
2015/08/17 职场文书