【问题标题】:Using $this when not in object context in a Laravel controller在 Laravel 控制器中不在对象上下文中时使用 $this
【发布时间】:2017-04-17 05:08:45
【问题描述】:

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

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

代码如下:

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

    $cont = $this->apiContext;
}

【问题讨论】:

  • 你不能在静态函数上使用 $this

标签: php laravel object properties static


【解决方案1】:

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

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

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

        $cont = static::$apiContext;
    }
}

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

【讨论】:

    【解决方案2】:

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

    public static function PayExecute() {
        $paymentId = Input::get('paymentId');
        $PayerID = Input::get('PayerID');
    
        $cont = (new static)->apiContext;
    }
    

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2012-12-18
        • 2013-12-14
        • 1970-01-01
        • 2022-12-03
        • 1970-01-01
        • 2015-02-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多