2016-12-02 51 views
0

我在控制器中創建了一個公共靜態函數,我需要訪問在構造函數中設置的類屬性。我通常使用$this->something訪問這些類的屬性,但是這一次,我得到這個錯誤:

Using $this when not in object context

下面的代碼:

public static function PayExecute() { 
    $paymentId = Input::get('paymentId'); 
    $PayerID = Input::get('PayerID'); 

    $cont = $this->apiContext; 
} 
+2

你不能在靜態函數中使用$ this –

回答

3

您需要$apiContext聲明爲靜態屬性,你需要使用self關鍵字static。事情是這樣的:

class YourController extends BaseController 
{ 
    private static $apiContext = ''; 

    public static function PayExecute() 
    { 
     $paymentId = Input::get('paymentId'); 
     $PayerID = Input::get('PayerID'); 

     $cont = static::$apiContext; 
    } 
} 

BTW:注意有關事實static晚靜態綁定。

2

不能使用「$這種」靜態方法。 雖然您可以訪問「self ::」,但請記住,您無法訪問要求當前類實例化的方法/屬性。

-1

你必須創建新實例,然後才能訪問其屬性

public static function PayExecute() { 
    $paymentId = Input::get('paymentId'); 
    $PayerID = Input::get('PayerID'); 

    $cont = (new static)->apiContext; 
} 
相關問題