调用php -l
检查php文件的语法。
有没有办法检查未定义的函数? 我不需要它使用在运行时定义的函数,也不需要使用动态调用 。
显然无法调用文件:我需要检查整个文件,而不仅仅是检查执行的分支。见下面的例子。
myfile.php:
function imhere () {}
main.php:
require_once 'myfile.php';
if (true) {
imhere();
}
else {
imnhothere(); // I need to get a warning about this
}
答案 0 :(得分:2)
动态语言无法检查未定义的函数。考虑到未定义的函数可以通过多种方式表现出来:
undefined();
array_filter('undefined', $array);
$prefix = 'un'; $f = $prefix.'defined'; $f();
除此之外,可能存在有条件地使用和定义的功能(通过包含或其他方式)。在最坏的情况下,请考虑以下情况:
if(time() & 1) {
function foo() {}
}
foo();
上述程序是否调用未定义的函数?
答案 1 :(得分:0)
检查语法只需要扫描php文件的当前内容,但是检查函数是否定义是不同的,因为函数可以在所需的文件中定义。
最简单的方法就是执行文件,未定义的函数会给你一个PHP Fatal error: Call to undefined function ....
。
或者您可能需要this。
答案 2 :(得分:0)
在评论网球之后,我想我会把一些想法结合到一个答案中。
您可能需要的是一些更高级别的测试(集成或Web测试)。通过这些,您可以测试完整的模块或整个应用程序以及它们如何挂在一起。通过使用相关的包含语句对整个页面或类组运行测试,这将帮助您隔离对未定义函数以及许多其他事物的调用。您可以使用PHPunit进行集成测试(以及单元测试),尽管我不确定此时会获得那么多。
最好是调查网络测试。您可以使用许多工具(这绝不是一个完整的列表):