3 回答
![?](http://img1.sycdn.imooc.com/54585094000184e602200220-100-100.jpg)
TA贡献1853条经验 获得超6个赞
您应该在函数定义中通过引用表示调用,而不是实际调用。由于PHP开始在版本5.3中显示弃用错误,我想说重写代码是个好主意。
从文档:
函数调用上没有参考符号 - 仅在函数定义上。单独的函数定义足以通过引用正确传递参数。由于PHP 5.3.0中,你会得到一个警告说“呼叫时间传递通过引用”已经过时,当您使用&在foo(&$a);。
例如,而不是使用:
// Wrong way!
myFunc(&$arg); # Deprecated pass-by-reference argument
function myFunc($arg) { }
使用:
// Right way!
myFunc($var); # pass-by-value argument
function myFunc(&$arg) { }
![?](http://img1.sycdn.imooc.com/545869470001a00302200220-100-100.jpg)
TA贡献1827条经验 获得超8个赞
对于像我这样的人来说这是因为他们需要将一个巨大的遗留项目更新为5.6:正如这里的答案所指出的那样,没有快速修复:你真的需要手动找到问题的每一个,并修复它。
我发现在项目中找到所有有问题的行的最方便的方法(没有使用完整的静态代码分析器,这是非常准确但我不知道任何会立即带你到编辑器中的正确位置)使用的是Visual Studio Code,它内置了一个很好的PHP linter,它的搜索功能允许Regex搜索。(当然,您可以使用任何IDE /代码编辑器进行PHP linting和Regex搜索。)
使用这个正则表达式:
^(?!.*function).*(\&\$)
可以在项目范围内搜索&$
仅出现在非函数定义的行中。
这仍然会导致许多误报,但它确实使工作变得更容易。
VSCode的搜索结果浏览器可以让您轻松查找有问题的线条:您只需点击每个结果,然后查看linter下划线为红色的那些结果。你需要解决的问题。
- 3 回答
- 0 关注
- 526 浏览
添加回答
举报