PhpStorm-如何检测PHP错误“;不应静态调用非静态方法";?
在PHP中,静态方法可以用于静态方法和非静态方法,而非静态方法只能用于非静态方法。这就是为什么静态调用动态方法会产生PhpStorm-如何检测PHP错误“;不应静态调用非静态方法";?,php,phpstorm,code-inspection,phpmd,phpcodesniffer,Php,Phpstorm,Code Inspection,Phpmd,Phpcodesniffer,在PHP中,静态方法可以用于静态方法和非静态方法,而非静态方法只能用于非静态方法。这就是为什么静态调用动态方法会产生E\u STRICT错误 例如: <?php class Example { public function foo() { return "Foo"; } public static function bar() { return "Bar"; } } $ex = new Example(); // N
E\u STRICT
错误
例如:
<?php
class Example
{
public function foo() {
return "Foo";
}
public static function bar() {
return "Bar";
}
}
$ex = new Example();
// Non-static call
echo $ex->bar();
// Static call on a non-static method
// PHP Error "Strict standards: Non-static method should not be called statically"
// ERROR NOT DETECTED BY PHPSTORM!
echo Example::foo();
静态代码分析可能会提示一些潜在错误。它从不保证没有错误,人们真的不应该依赖它
作为一个实用的建议,您可以使用以下命令搜索所有静态调用
grep -roh "\w\+::.\+\?("
然后自己分析清单。检查在这里效果很好()
请在此文件上尝试code |检查代码…
——它将强制重新分析此文件。更好吗
如果什么都没有--请执行文件|使缓存无效…
并重新启动IDE
附加说明
如果您有兴趣只对整个项目运行此检查,请使用code |按名称运行检查…
——对每个文件执行完整的Inspect code
。更改php.ini文件中的错误报告
error\u reporting=E\u ALL&~E\u NOTICE&~E\u WARNING&~E\u STRICT&~E\u DEPRECATED工作正常:1)尝试code |检查此文件中的代码…
;2) 甚至是File |使缓存无效…
并重新启动IDE。要仅运行此检查,请使用code |按名称运行检查…
(这比对每个文件执行完全Inspect code
要快)。我认为使缓存无效
并完全重新启动PhpStorm做到了这一点。对这个特定错误的检查似乎有问题,我不明白为什么(对于其他PHP错误/警告完全可以)@懒鬼:无论如何,谢谢!我认为,invalidatecaches
和PhpStorm的完全重新启动就成功了。对这个特定错误的检查似乎有问题,我不明白为什么(对于其他PHP错误/警告完全可以)@懒鬼:无论如何,谢谢!