phpphpstormcode-inspectionphpmdphpcodesniffer

PhpStorm - How to detect PHP error "Non-static method should not be called statically"?


With PHP, static method can be used in both static method and non-static method, and non-static method can only used in non-static method. That's why calling a dynamic method statically generates the E_STRICT error.

For example:

<?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();

The last line will generated this PHP error (it's logic): enter image description here

I am currently working on a large PHP application that calls, in some PHP files, non-static methods statically. It was not a problem with an very old version of PHP but we have decided to migrate to the latest PHP version.

Manually check all the project files to identify this bad syntax will be too long (+ 1000 files)!

The built-in code inspection features of PhpStorm doesn't detect this type of error within the analyzed source code. Why? Should I configure something? How?

Below, my PHP code inspection configuration in PhpStorm:

enter image description here

Thanks!


Solution

  • That inspection works fine here (proof).

    1. Please try Code | Inspect Code... on this file -- it will force re-analysing of this file from scratch. Any better?

    2. If nothing -- please do File | Invalidate Caches... and restart IDE


    P.S.
    If you are interested of running this inspection only on whole project -- use Code | Run Inspection by Name... -- it's much faster that doing full Inspect Code for each file.