PHP静态方法是否已弃用?

时间:2016-06-08 23:48:34

标签: php

警告:

  

在PHP 7中,不推荐静态调用非静态方法,并将生成E_DEPRECATED警告。
  将来可能会删除对静态调用非静态方法的支持。

我在PHP 7中运行:

public static function loadStandards() {
   return true;
}

或者这个:

static public function loadStandards() {
   return true;
}

并且工作正常,没有来自PHP的 E_DEPRECATED 警告。

那么..是否已被弃用?不是吗?

namespace App\Http\Controllers\Tools;

use App\Http\Controllers\Central;

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

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

1 个答案:

答案 0 :(得分:5)

静态函数很好,根本没有弃用。

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

你可以致电foo::myStaticFunction(),它会正常工作。

过去你可以静态调用非静态函数。这就是PHP弃用的内容。

例如:

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

现在,如果您尝试将foo::myNonStaticFunction()称为静态,那么PHP会给您一个弃用的警告。

请参阅此处查看工作示例:https://3v4l.org/lXYsf