【问题标题】:Migrating to a newer version of PHP迁移到较新版本的 PHP
【发布时间】:2009-04-08 22:51:17
【问题描述】:

我注意到几周前 PHP 5.3 达到了候选发布阶段(哇!),但随后看到已经弃用的函数列表最终被删除,这让我开始思考它是否会破坏我的任何旧代码.

没有进行“一目了然”的测试(在测试服务器上安装并试用),是否有任何类型的迁移工具可以分析您的代码以突出问题?例如,如果某些脚本使用ereg_* 函数。

【问题讨论】:

  • 你目前运行的是什么版本?
  • 5.2.4,虽然这不重要?
  • 好吧,如果你从 5.1 -> 5.3 开始,我可以想到如果你从 5.2 -> 5.3 开始,这些问题就不会存在。当然,当前版本和新版本都是相关的。
  • 在这里的文章中:cvs.php.net/viewvc.cgi/php-src/… 我没有看到提到删除的功能。你能链接到你看到的地方吗?
  • 我知道一些在 5.3 中被弃用但直到 6 才被删除的东西。

标签: php migration


【解决方案1】:

您可以使用的一种技术是获取正在被删除的已弃用函数的列表并为它们 grep。对于这样的事情,一点 shell 脚本 fu 大有帮助。

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

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

这将告诉您您正在使用的已弃用函数的所有实例。

【讨论】:

  • 与其在循环中重新 grep 相比,创建如下语句可能更有效: egrep -R '(dep_func_1|dep_func_2|etc...)' /path/to/src 另一种选择将生成一个 xdebug 跟踪文件,其中将包含被调用函数的名称——但很难获得 100% 的代码覆盖率
  • 当然这样会更有效率,但是写一个从文件中读取 dep_func_1、dep_func_2 等并执行 grep 的易于阅读的 shell 脚本有点困难。我这样做是为了便于阅读,而不是为了速度。 :-P
【解决方案2】:

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

【讨论】:

  • 单元测试是 FTW,但我认为他明确表示他想要一个不涉及测试服务器的启发式方法。 :-)
  • 是的,对于任意警告感到抱歉,但我想知道除此之外是否还有其他内容。此外,还有一些第三方软件我没有任何单元测试。
猜你喜欢
  • 2018-11-20
  • 2011-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-13
相关资源
最近更新 更多