相关疑难解决方法(0)

PHP 5.3并通过引用分配new的返回值

在PHP 5.3中已弃用了按引用分配new的返回值.因此,

$obj =& new Foo();
Run Code Online (Sandbox Code Playgroud)

现在抛出一个E_DEPRECATED错误.

将具有大量遗留代码的大型应用程序升级到5.3时,会导致许多不必要的通知.

作为这个问题的潜在解决方案,我正在考虑使用正则表达式来查找和替换=& newwith的所有实例= new.例如,以下内容将查找所有PHP文件,并清除以下所有实例=& new:

find ./ -name '*.php' | xargs perl -p -i -e 's/=(\s*)&(\s*)?new\b/= new/g'
Run Code Online (Sandbox Code Playgroud)

寻找以下问题的答案:

  1. 它会工作得很好吗?我可能遇到哪些潜在问题?
  2. 如果不是,其中替换的代码示例=& new= new将改变在PHP 5.3的行为.
  3. 任何具有此功能的流行库的例子都会引起问题.
  4. 你还建议其他什么想法来解决大量问题=& new

我怀疑这样可以正常工作,但寻找可能遇到麻烦的边缘情况.是的,我知道我可以更改错误报告设置.但我不想隐藏通知,我想修复它们.

php

11
推荐指数
1
解决办法
4748
查看次数

标签 统计

php ×1