【发布时间】:2015-11-27 10:02:49
【问题描述】:
在PHP中,静态方法既可以用在静态方法中,也可以用在非静态方法中,非静态方法只能用在非静态方法中。这就是静态调用动态方法会产生E_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();
我目前正在开发一个大型 PHP 应用程序,该应用程序在一些 PHP 文件中静态调用非静态方法。非常旧的 PHP 版本没有问题,但我们决定迁移到最新的 PHP 版本。
手动检查所有项目文件以识别此错误语法将太长(+ 1000 个文件)!
PhpStorm 的内置代码检查功能不会在分析的源代码中检测到此类错误。为什么?我应该配置一些东西吗?怎么样?
下面是我在 PhpStorm 中的 PHP 代码检查配置:
谢谢!
【问题讨论】:
-
工作正常:postimg.org/image/y82q2zzuj 1) 在此文件上尝试
Code | Inspect Code...; 2) 甚至File | Invalidate Caches...并重新启动IDE。 -
仅运行此检查 -- 使用
Code | Run Inspection by Name...(对每个文件执行完整的Inspect Code更快)。 -
我认为
Invalidate Caches和 PhpStorm 的完全重启可以解决问题。检查这个特定错误似乎有问题,我不明白为什么(其他 PHP 错误/警告完全可以)。 @LazyOne:无论如何,谢谢! s28.postimg.org/gr2aoquyl/phpstorm_php_inspection_3.png
标签: php phpstorm code-inspection phpmd phpcodesniffer