遵循以下主题:How to handle functions deprecation in library?我想找到一种方法来跟踪对已弃用函数的所有调用,这样我就可以确保在删除函数之前将它们全部替换掉。给出以下PHP方法
/*
@deprecated - just use getBar()
*/
function getFoo(){
return getBar();
}
function getBar(){
return "bar";
}
我提出了以下方法,我正在寻找反馈。
function getFoo(){
try{
throw new Exception("Deprecated function used");
} catch(Exception $e){
//Log the Exception with stack trace
....
// return value as normal
return getBar();
}
}
答案 0 :(得分:4)
对于PHP内部不推荐使用的函数,只需将E_STRICT添加到error_reporting。
对于用户地址函数提出关于已弃用函数的通知或警告,我建议花时间添加@deprecated
注释的开发人员也会触发E_USER_DEPRECATED警告,例如:
function getFoo(){
trigger_error(__FUNCTION__ . 'is deprecated', E_USER_DEPRECATED );
return getBar();
}
我不知道任何available QA tools是否可以自动检测代码是否包含已弃用的方法调用。这些是你最好的选择。
如果您使用具有100%代码覆盖率的TDD,则不必担心删除已弃用的方法或函数。您的自动化测试将失败,您将知道在哪里寻找。
答案 1 :(得分:1)
依赖于实际调用的已弃用函数是危险的 - 您将拥有100%的代码覆盖率以确保您不会遗漏任何内容。可以慢慢找到对已弃用函数的所有调用并逐个替换它们,但不足以完全转换。
我认为File
> Search in Files
是你最好的选择,因为我所知道的PHP没有很好的重构工具。
事后补充:也许PhpXRef是解决方案。