是否有良好的方法来测试PHP项目是否适用于新版本的PHP? 让我们说我们有一个在PHP 5.0下开发的项目,现在想用PHP 5.4运行它。该项目没有单元测试或类似的东西。
只需使用PHP 5.4运行它,然后单击以查看是否存在错误并不足够。
答案 0 :(得分:4)
运行测试。如果您没有测试,请在PHP 5.0下编写一些。然后在5.4下运行它们。如果他们破了,那么你已经找到了需要修复的东西。拥有一套测试脚本无论如何都是很好的做法,所以如果你还没有,那么这是一个开始编写它们的好机会。查找phpUnit,这是编写单元测试最常用的PHP工具。
为了在现有项目上创建测试套件,我建议使用Selenium或Sahi之类的工具来记录浏览器会话。打开录音并开始正常测试。 Voila:一次可重复的测试。无论如何,你将不得不做这种测试,所以你也可以记录下来。当然,那些是功能测试,而不是单元测试,但它们都是相同的测试,如果你可以用它们覆盖足够的功能,那么你将拥有系统正在运行的相当全面的演示。
语法检查:在批处理作业中使用PHP的命令行-l
选项对所有文件运行语法检查。这将证明一切都能成功解析。
这将消除明显的问题。
使用体面的IDE开发代码。像Netbeans这样的IDE会突出显示语法问题和警告并强调相关代码。这使得查找错误变得更加容易。
如果您仍在使用记事本进行开发,那么您错过了一整套好东西。
如果您正在使用ereg()
或相关功能,则需要更改为preg_match()
等。您仍然可以使用mysql_query()
进行数据库访问,因为这是仅在5.5中弃用,但如果您正在使用它,您也可以认为这也是进行此更改的好时机。
查找PHP提供的Migration Guides。这些提供了PHP版本之间所有代码破坏性更改的完整详细信息。特别要注意不推荐使用的功能。
最重要的版本是5.3:旧代码的 lot 被5.3中删除的功能打破。这些功能包括magic_quotes
和register_globals
;在此之前的很长一段时间里,他们一直被认为是不好的做法,但直到5.3才将它们用来实际弃用它们。如果您正在使用它们,这将是您必须面对的最大问题。
PHPMD和PHPCodeSniffer,PHP Lint等工具可能有助于分析您的代码。它们并非真正用于版本兼容性检查,但可以帮助您找到问题。