迁移到新版本的PHP

5
我注意到几周前PHP 5.3达到了发布候选阶段(哇!),但看到已经弃用的函数列表最终被删除,这让我想知道它是否会破坏我的旧代码。
除了进行 suck-it-and-see 测试(在测试服务器上安装并尝试),是否有任何迁移工具可以分析您的代码以突出问题?例如,如果某些脚本使用 ereg_* 函数。

你目前运行的是哪个版本? - cletus
5.2.4,但这应该没有关系吧? - nickf
我可以想到一些问题,如果你从5.1升级到5.3,而如果你从5.2升级到5.3则不会有这些问题。当然,当前版本和新版本都是相关的。 - cletus
在这篇文章中:http://cvs.php.net/viewvc.cgi/php-src/UPGRADING?view=markup&pathrev=PHP_5_3 我没有看到提到已删除的函数。你能链接到你看到的地方吗? - Benson
我知道一些在5.3中被弃用但直到6才被删除的东西。 - cletus
显示剩余2条评论
2个回答

5

您可以使用一种技术,即获取将被删除的弃用函数列表并进行grep。在这种情况下,一些shell脚本技巧会事半功倍。

假设您有一个名为deprecated.txt的文件,其中包含每行一个弃用函数名称:

for func in `cat deprecated.txt`
do
  grep -R $func /path/to/src
done

这将告诉您正在使用的所有不推荐使用的函数实例。


1
与其在循环中重新grep,创建一个类似于以下语句可能更有效: egrep -R '(dep_func_1|dep_func_2|etc...)' /path/to/src另一个选择是生成xdebug跟踪文件,其中将包括调用函数的名称--但要获得100%的代码覆盖率可能会很困难。 - Frank Farmer
当然,那样会更有效率,但编写一个易于阅读的 shell 脚本来从文件中读取 dep_func_1、dep_func_2 等并执行 grep 操作会有些困难。我这么做是为了易读性,而不是为了速度。:-P - Benson

1

没有什么比在测试服务器上安装并运行单元测试更好的了。 你有单元测试,对吧?;)


单元测试是胜利,但我认为他明确表示他想要一种不涉及测试服务器的启发式方法。 :-) - Benson
是的,抱歉加了这个任意的限制条件,但我想知道除此之外还有什么。另外,有一些第三方软件没有单元测试。 - nickf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接