我在一个控制器中创建了一个公共静态函数,我需要访问一个在构造函数上设置的类属性。我通常使用$this->something
来访问这样的类属性,但是这次,我得到了这个错误:
不在对象上下文中时使用$this
代码如下:
public static function PayExecute() {
$paymentId = Input::get('paymentId');
$PayerID = Input::get('PayerID');
$cont = $this->apiContext;
}
5条答案
按热度按时间ffscu2ro1#
你需要将
$apiContext
声明为静态属性,并且你需要使用self
的static
关键字。顺便说一句:请注意
static
是后期静态绑定。6yjfywim2#
你不能在静态方法中使用“$this”。虽然你可以访问“self::“,但是记住你不能访问那些需要示例化当前类的方法/属性。
8fq7wneg3#
此问题的根源是Excel类的示例化错误。
检查控制器。
错误:
use Maatwebsite\Excel\Excel;
正确:
use Maatwebsite\Excel\Facades\Excel;
svujldwt4#
在我的例子中,我有一个非静态的控制器函数(所以
public function myFunc
而不是public static myFunc
),但是我忘记了静态调用该函数的一行(比如MyController::myFunc
)。删除此行修复了错误。
故事的寓意:当您的函数使用
$this->something
时,不要静态调用该函数:)4sup72z85#
必须创建新示例,然后才能访问其属性