このエラーに関する他の質問を探しましたが、私の問題に該当するケースが見つかりませんでした。
基本的に、私のクラスの静的メソッドは、別の非静的メソッドを呼び出す非静的メソッドを呼び出します。
これにより、致命的なエラーがスローされます。
致命的なエラー: 行の 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();