在软件工程学里,重构代码一词通常是指在不改变代码的外部行为情况下而修改源代码。软件重构需要借助工具完成,而重构工具能够修改代码同时修改所有引用该代码的地方。本文收集了五款出色的PHP代码重构工具,以帮助你完善更加优秀的项目。

  1. Rephactor

  Rephactor是一款命令行重构工具,这是一款自动化工具,允许开发者以一种简洁的方式在不同的代码库中修改源码。

  主要功能:

  • 保证重构的可逆性—— 一旦发现问题,代码是可逆的,可以回溯到前一个版本。
  • 查找替换功能—— 普通查找替换,方法重命名,类重命名,正则表达式模式的替换。
  • 所有操作完成后,均基于SimpleTest Aperiplus进行测试,并保证测试的覆盖率。
  • 集成Phemto ,保证类的相关性测试。

  2. Scisr

  Scisr是一款利用PHP编写的重构工具。项目托管在GitHub上。基于GPL许可证下发行。

  使用方法:

  类的重命名:

$ scisr rename-class OldName NewName [files]

  修改方法:

$ scisr rename-method OwningClassName oldMethodName newMethodName [files]

  文件重命名:

$ scisr rename-file old/file_name new/dir/new_file_name [files]

  重命名类和文件:

$ scisr rename-class-file OldClassName NewClassName [files]

  3. PHP Refactoring Browser

  这是一款PHP 代码的重构工具,通过生成diffs来描述重构的步骤,避免重构过程中的简单错误,该工具非常棒。项目托管在GitHub上。

  使用库:

  重构浏览器数据主要包含以下几个方面:

  • 补丁——支持基于更改文件操作创建补丁;
  • 重构——包含实际重构域和适配第三方库;
  • 集合——基于PHP数组可靠添加集合语义。目前包含一组类型。

  4. PhpStorm

  PhpStorm是由JetBrains公司开发的一款PHP IDE富应用,同时支持重构。PhpStorm可随时帮助用户对其编码进行调整,运行单元测试或者提供可视化调试功能。

  目前,发布了PhpStorm 7版本,新版本支持PHP5.5;改进PHP语法着色性能;Vagrant、SSH 控制&远程工具;支持Drupal & PHP框架;改进调试和测试性能。

  PhpStorm的主要特性:

  • 智能PHP编码编辑器;
  • 代码质量分析;
  • 支持调试/测试;
  • 支持HTML/CSS/JavaScript编辑器;
  • 支持跨平台。

  5. Zend Studio

  Zend Studio是Zend Technologies开发的PHP语言集成开发环境。支持HTML和JS标签,但只对PHP语言提供调试支持。

  主要特性:

  • 具备功能强大的专业编辑工具和调试工具;
  • 支持PHP语法高亮显示、语法自动填充功能,支持语法自动缩排和代码复制功能;
  • 支持书签功能;
  • 内置一个强大的PHP代码调试工具;
  • 支持本地和远程两种调试模式,支持多种高级调试功能。

推荐五款优秀的PHP代码重构工具的更多相关文章

  1. 推荐一款优秀的web自动化测工具

    在业务使用的自动化测试工具很多.有开源的,有商业化的,各有各得特色,各有各得优点!下面我就介绍几个我用过的一款非常优秀的国产自动化测试工具.在现有的自动化软件当中,都是以元素的name.id.xpat ...

  2. 推荐15款最好的 Twitter Bootstrap 开发工具

    Twitter Bootstrap 自从2011年最初发布到网上后,迅速成为 Web 领域最流行的响应式前端开发框架之一,是网页设计的优秀实践.Twitter Bootstrap 框架包含了众多的预定 ...

  3. 五款轻量型bug管理工具横向测评

    五款轻量型bug管理工具横向测评 最近正在使用的本地bug管理软件又出问题了,已经记不清这是第几次了,每次出现问题都要耗费大量的时间精力去网上寻找解决方案,劳心劳力.为了避免再次出现这样的情况,我决定 ...

  4. 推荐一款优秀的代码编辑软件--Source Insight

    “工欲善其事,必先利其器”,好的工具能够提高我们办事的效率,进而提升团队乃至企业的竞争力. 对于软件开发工程师来说,选择一款优秀的代码编辑软件也是很重要的.最近,我看到有很多同事还在用微软的VC ++ ...

  5. 【JavsScript】推荐五款流行的JavaScript模板引擎

    摘要:Javascript模板引擎作为数据与界面分离工作中最重要一环,受到开发者广泛关注.本文通过开发实例解析五款流行模板引擎:Mustache.Underscore Templates.Embedd ...

  6. 给你推荐10款优秀的 HTML5 动画工具

    HTML5 在过去三年快速增长,已经成为 Web 开发人员最喜欢的编程语言之一.强大的编程语言拥有开发更好的网页应用的能力. HTML5 中引入的新技术都非常好,像 Chrome.Firefox.Sa ...

  7. 【转载】推荐5款超实用的.NET性能分析工具

    来源:http://www.csdn.net/article/2012-11-23/2812174-5-Good-and-useful-.NET-Profilers 虽然.NET框架号称永远不会发生内 ...

  8. 推荐两款好用的反编译工具(Luyten,Jadx)

    使用JD-Gui打开单个.class文件,总是报错// INTERNAL ERROR 但当我用jd-gui反编译前面操作获得的jar文件的时,但有一部分类不能显示出来--constants类,仅仅显示 ...

  9. c# 推荐5款超实用的.NET性能分析工具

    虽然.NET框架号称永远不会发生内存泄漏,原因是引入了内存回收机制.但在实际应用中,往往我们分配了对象但没有释放指向该对象的引用,导致对象永远无法释放.最常见的情况就是给对象添加了事件处理函数,但当不 ...

随机推荐

  1. Article Master Data Deviation

    Site data – Logistics DC / Logistics Store Where is the reference site decided when you maintain the ...

  2. Android版的疯狂猜图游戏源码完整版分享

    这个游戏源码是在安装教程网那么分享过来的,Android版的疯狂猜图游戏源码完整版分享,也是本人之前很早以前发的一款游戏源码的,大家如果想了解一下,可以看看吧,不说多了,上一个图先吧.   > ...

  3. Unity学习笔记(1):认识Unity

    Unity是什么? Unity是patterns & practices团队开发的一个轻量级.可扩展的依赖注入容器,具有如下的特性: 它提供了创建(或者装配)对象实例的机制,而这些对象实例可能 ...

  4. 增加p()函数,方便开发中对变量打印调试

    在开发的过程中,我们经常要输出一下变量看看得到的结果是什么,我们就要根据变量的类型选择使用echo,print_r或者var_dump,brophp框架中的p()函数会自动根据变量类型选择用什么方法为 ...

  5. vector 内部方法大全 学习(初学者的参考资料)

    1    vector构造函数:也就是如何对一个vector对象进行初始化 ////////////////////////////代码//////////////////////////////// ...

  6. Python学习_数据排序方法

    Python对数据排序又两种方法: 1. 原地排序:采用sort()方法,按照指定的顺序排列数据后用排序后的数据替换原来的数据(原来的顺序丢失),如: >>> data1=[4,2, ...

  7. C语言的32个关键字

    由ANSI标准定义的C语言关键字共个: auto double int struct break else long switch case enum register typedef char ex ...

  8. 2016 Multi-University Training Contest 1 GCD RMQ+二分(预处理)

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=5726 题意:有N(N <= 100,000),之后有Q(Q <= 100,000)个区间查询[ ...

  9. PAT乙级真题1002. 写出这个数 (20)(解题)

    读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式:每个测试输入包含1个测试用例,即给出自然数n的值.这里保证n小于10100. 输出格式:在一行内输出n的各位数字之和的每 ...

  10. 【EF】疑难杂症

    用户和购物车数据  主从表 添加 ADO.NET实体数据类型 [Test] public void EntiyConnect() { var context = new projectDatabase ...