我在控制器中创建了一个公共静态函数,我需要访问在构造函数上设置的类属性。我通常使用$this->something
来访问这些类属性,但这一次,我收到了这个错误:
不在对象上下文中时使用
$this
以下是代码:
public static function PayExecute() {
$paymentId = Input::get('paymentId');
$PayerID = Input::get('PayerID');
$cont = $this->apiContext;
}
答案 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;
}