通过引用分配新的返回值在
PHP 5.3中已经为
deprecated.因此,
@H_301_21@$obj =& new Foo();
现在抛出一个E_DEPRECATED错误.
当将具有大量旧版代码的大型应用程序升级到5.3时,会导致大量不需要的通知.
作为这个问题的潜在解决方案,我正在考虑使用正则表达式来查找和替换所有=& new with = new.例如,以下将找到所有的PHP文件,并且清除所有的实例=&新:
find ./ -name '*.PHP' | xargs perl -p -i -e 's/=(\s*)&(\s*)?new\b/= new/g'
寻找以下问题的答案:
>它会正常工作吗?我遇到什么潜在的问题?
>如果没有,代码的例子代替=& new with = new将改变PHP 5.3中的行为.
>任何有这种流行图书馆的例子都会被称为导致问题.
>还有什么其他的想法,你建议处理大量的&新?
我怀疑这将工作正常,但寻找边缘的情况下,我可能遇到麻烦.是的,我知道我可以更改错误报告设置.但我不想隐藏通知,我想修复它们.