我已经寻找涵盖此错误的其他问题,但找不到适用于我的问题的案例。
基本上,我的类中的静态方法调用了一个非静态方法,该方法反过来又调用了另一个非静态方法。
这会引发致命错误:
致命错误:在线上的 class.php 中不在对象上下文中时使用 $this ...
我不明白为什么不能通过 $this 从另一个非静态类方法调用非静态类方法。是不是因为它们都是从静态函数调用的,因此没有 $this 实例?
这是(简化的)类:
class Redis_Provision {
public $redis = NULL;
public function redis_query()
{
if(is_null($this->redis)) {
$this->setBackend(); <------- This throws the fatal error
}
return $this->redis;
}
public function setBackend()
{
$this->redis = new Redis();
$this->redis->connect();
}
public static function activate()
{
if( self::redis_query()->ping())
{
// Do stuff
}
}
}
我会通过以下方式调用:
$redis_provision = new Redis_Provision();
$redis_provision->activate();