我通过更新函数调用来修改超过5000行代码中的大约600行代码,以匹配我为脚本使用而创建的新库。我手动更新时手动发现了一些错误,但我相信我忽略了一些。
到目前为止,我发现它们的唯一方法是运行代码并在发生错误时使其崩溃。这是一个坏主意,因为这些错误将在资源被释放之前发生。
以下是代码中解释我问题的示例:
假设我有主线代码(称为index.php),其中包含:
<?php
include "library.php";
$file=fopen("afile","w");
doWrite($file);
brokenFunction();
fclose($file);
exit();
?>
并说library.php只包含这个:
<?php
function doWrite($file){
fwrite($file,"Test");
doNothing();
}
?>
由于brokenFunction();
和doNothing();
不存在,因此预计会出错。而不是PHP编译然后执行代码直到第一次失败的函数调用,如何在执行代码之前检查主线代码链接到的所有引用函数是否存在?
因此,在我的示例中,我预计会出现错误并且代码停止在$file=fopen("afile","w");
处编译/执行,因为brokenFunction();
和doNothing();
不存在。
我如何实现这一目标?
答案 0 :(得分:0)
您可以使用内置的function_exists()
功能:
if (!function_exists('brokenFunction')) {
throw new \Exception('brokenFunction is missing');
}
但这只会在执行代码时引发错误。
某些工具如PHPStorm可以check your code(不运行它)并在缺少函数时抛出警告。
此(已结束)SO问题中列出了一些其他工具:Is there a static code analyzer [like Lint] for PHP files?。
答案 1 :(得分:0)
我发现全局调试环境而不使用@ A.L方法并在每个编辑行之前粘贴function_exists调用的最佳方法是使用某种类型的PHP调试器,很可能内置于IDE中,将每个函数调用行与“测试编译”进行比较。您的代码和所有包含的库,以确保被调用的函数存在(如果它没有,可能会用红色加下划线)。像Aptana这样的PHP IDE可能就是你正在寻找的东西(特别是如果你发现自己有未来的更新要运行,因为这个解决方案会有安装/设置Aptana的时间开销)。