下面是一个语法上有效的PHP程序,它的工作时间是一半。在任何静态语言中,等效行都是编译错误:
<?php
class A {
function a() { return 1; }
}
$x = new A();
if(rand(1,100) > 50) {
print $x->b();
}
else {
print $x->a();
}
?>
PHP的示例输出:
C:\temp>php static.php
1
C:\temp>php static.php
1
C:\temp>php static.php
Fatal error: Call to undefined method A::b() in C:\temp\static.php on line 9
Call Stack:
0.9747 323920 1. {main}() C:\temp\static.php:0
动态语言支持者感到兴奋,因为,嘿,这个程序在50%的时间内工作,而静态语言上的等效程序将无法编译,因此在0%的时间工作。
所以,关于我的问题。是否有任何PHP静态分析工具可以检测到这类特定的问题?
我已阅读相关问题:Is there a static code analyzer [like Lint] for PHP files?
但是我没有尝试一个接一个地提到的所有工具,而是认为我会问一个更具体的问题,以便能够做到这一点。