Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PhpStorm-如何检测PHP错误“;不应静态调用非静态方法";?_Php_Phpstorm_Code Inspection_Phpmd_Phpcodesniffer - Fatal编程技术网

PhpStorm-如何检测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

在PHP中,静态方法可以用于静态方法和非静态方法,而非静态方法只能用于非静态方法。这就是为什么静态调用动态方法会产生
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错误/警告完全可以)@懒鬼:无论如何,谢谢!