2016-12-02 18 views
0

コントローラにpublic static関数を作成しました。コンストラクタで設定されたクラスプロパティにアクセスする必要があります。私は通常、このようなクラスのプロパティにアクセスするために$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; 
    } 
} 

ところで::staticが結合遅延静的であるという事実について注意してください。このような何か。

2

あなたは「$この」の静的メソッドを使用することはできませんが。 "self ::"にアクセスできますが、現在のクラスをインスタンス化する必要があるメソッド/プロパティにアクセスすることはできません。

-1

新しいインスタンスを作成する必要があり、その後、そのプロパティにアクセスすることができます

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

    $cont = (new static)->apiContext; 
} 
関連する問題