user3211908 user3211908 - 6 months ago 25
PHP Question

The PHP static methods is Deprecated or not?

Warning:


In PHP 7, calling non-static methods statically is deprecated, and will generate an E_DEPRECATED warning.

Support for calling non-static methods statically may be removed in the future.


I run in PHP 7 this:

public static function loadStandards() {
return true;
}


Or this:

static public function loadStandards() {
return true;
}


And is working fine no E_DEPRECATED warning from PHP.

So.. Is deprecated? or not?

namespace App\Http\Controllers\Tools;

use App\Http\Controllers\Central;

class ShopTool extends Central
{
public static $loaded = [];

public static function loadStandards()
{
return true;
}
}

Answer

Static functions are just fine, not deprecated at all.

class foo {
    public static function myStaticFunction() {
        echo "I'm declared static! Calling me statically works great.";
    }
}

You can call foo::myStaticFunction() and it'll work just fine.

It used to be that you could call a non-static function statically. This is what PHP is deprecating.

For example:

class foo {
    public function myNonStaticFunction() {
        echo "I'm not declared static, if you try to call me statically you'll get a deprecated warning";
    }
}

Now if you try to call foo::myNonStaticFunction() as if it were static, PHP will give you a deprecated warning.

See here for a working example: https://3v4l.org/lXYsf