问题描述
|
下面是语法上有效的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静态分析工具可以检测此类特定问题?
我已经阅读了相关的问题:是否有用于PHP文件的静态代码分析器(如Lint)?
但是,我没有一个一个地尝试其中提到的所有工具,而是想问一个更具体的问题,以实现这一目标的零插入。
解决方法
PhpStorm IDE可以在PHP代码中找到此错误以及许多其他错误。这是此IDE的“ 2”功能。
我只是此IDE的用户,不是营销人员:)