不在Laravel控制器的对象上下文中时使用$ this

时间:2016-12-02 10:12:41

标签: php laravel object properties static

我在控制器中创建了一个公共静态函数,我需要访问在构造函数上设置的类属性。我通常使用$this->something来访问这些类属性,但这一次,我收到了这个错误:

  

不在对象上下文中时使用$this

以下是代码:

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

    $cont = $this->apiContext;
}

3 个答案:

答案 0 :(得分:7)

您需要将$apiContext声明为静态属性,并且需要使用static self个关键字。像这样:

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

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

        $cont = static::$apiContext;
    }
}

BTW:请注意static是后期静态绑定的事实。

答案 1 :(得分:2)

你不能使用" $ this"在静态方法中。 您可以访问" self ::"但是请记住,您无法访问需要实例化当前类的方法/属性。

答案 2 :(得分:-1)

您必须创建新实例,然后才能访问其属性

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

    $cont = (new static)->apiContext;
}