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

Roh*_*sin 0 php static properties object laravel

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

使用$this时没有对象上下文

这是代码:

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

    $cont = $this->apiContext;
}
Run Code Online (Sandbox Code Playgroud)

Vla*_*pak 8

您需要$apiContext声明为静态属性,你需要使用staticself关键字.像这样的东西:

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

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

        $cont = static::$apiContext;
    }
}
Run Code Online (Sandbox Code Playgroud)

顺便说一句:注意事实static是后期静态绑定.


Nae*_*Dus 6

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