从PHP 5.2升级到PHP 5.3 – 向后不兼容的更改 – 如何轻松检测?

我希望将一个大的
PHP网站从5.2升级到5.3,之后可能会超越.

我正在处理的继承代码库是非常大的,800,000行代码,并且在大多数情况下查看向后不兼容的更改列表(http://php.net/manual/en/migration53.incompatible.php),使用代码的字符串搜索可以轻松搜索大多数这些问题,但其他(例如作为引用和API更改)更难搜索.我已经使用codesniffer来尝试识别破碎的代码区域,但是代码似乎没有找到所有内容(例如,没有找到引用和API问题).

从本质上讲,我所追求的是一种轻松识别受影响代码的方法,这些代码可能已经错过了,而无需运行所有代码或读取所有代码.是否有一个工具可以基本上扫描代码并告诉我问题区域并节省我几周/几个月的时间?

有任何想法吗?我忘了提到我们使用IIS / Windows如果这很重要.

最佳答案 通过寻找该页面上提到的特定功能,大多数显式向后不兼容的问题(如您链接的页面上所列)很容易找到.这是一个相对较短的列表,而且变化都非常具体.即使在大型代码库中也不难浏览它们,并且列出的大多数更改都是边缘情况,所以希望您不必担心该列表.

更大的问题在于list of features that was deprecated in 5.3.这包括您在问题中提到的传递参考功能.

其中一些功能很难通过搜索代码来找到,特别是对于大型代码库,如果代码已经存在了一段时间,那么可能性很高,你至少会对它们中的一部分犯规.

好消息是,您可以安全地在5.3中运行代码,而无需触及已弃用的功能.这些功能已弃用;这意味着它们已被标记为坏,但它们实际上还没有从语言中删除(大多数都是5.4),所以关于这些功能,您的软件仍然会像以前一样运行,除了它会抛出警告信息.

因此,在代码中查找所有这些内容的最佳方法是升级到5.3,运行代码,并捕获错误日志中出现的所有警告.

显然,你需要进行相当详尽的测试,以确保你已经找到了所有东西,但这并不一定是件坏事 – 事实上坦率地说,如果你升级的话,你不管怎样都不这样做该大小系统的语言版本.也许您可以将此作为一个机会开始编写那些您尚未设法解决的测试脚本.

点赞