2016-06-08 32 views
-1

警告:PHP的靜態方法是否被棄用?

在PHP 7,調用非靜態方法靜態已過時,會產生E_DEPRECATED警告。
支持靜態調用非靜態方法將來可能會被刪除。

我在PHP 7會這樣做:

public static function loadStandards() { 
    return true; 
} 

或者這樣:

static public function loadStandards() { 
    return true; 
} 

而且做工精細沒有E_DEPRECATED從PHP警告。

所以......被棄用?或不?

namespace App\Http\Controllers\Tools; 

use App\Http\Controllers\Central; 

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

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

靜態功能不推薦使用。調用_non-static_方法就好像它們是靜態的一樣被棄用。 – jszobody

+0

請向我們展示您的'class'。 – PHPglue

+0

請您可以編寫一些代碼來了解什麼是非靜態的? –

回答

4

靜態函數很好,根本沒有棄用。

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

+0

我剛更新了我的答案。第二個代碼示例是一個非靜態函數,並且向您展示如何靜態調用它會得到不推薦使用的警告。你看過我提供的鏈接嗎? – jszobody

+0

好吧,靜態在將來不會棄用?像我上面的代碼? –

+1

正確。只要你聲明一個函數是靜態的,你可以靜態調用它。它不被棄用。 – jszobody