이 오류를 다루는 다른 질문을 찾았지만 내 문제에 해당하는 사례를 찾을 수 없습니다.
기본적으로 내 클래스의 정적 메서드는 정적이 아닌 메서드를 호출합니다.이 정적 메서드는 다른 비 정적 메서드를 호출합니다. $이 통해 다른 비 정적 클래스 메소드의 비 정적 클래스 메소드를 호출 괜찮없는 이유
Fatal error: Using $this when not in object context in class.php on line ...
내가 알아낼 수 없습니다 :
는이것은 치명적인 오류가 발생합니다. 둘 다 정적 함수에서 호출되므로 $ 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();
"정적이 아닌 메서드를 정적으로 호출했기 때문에"- activate()가 STATIC으로 정의 되었습니까 ??? –
'self'를 사용하여'redis_query()'를 정적으로 호출하고 있습니다. –
실제로 new를 사용하여 객체를 인스턴스화 했음에도 불구하고 정적 메서드를 호출하면 정적 컨텍스트에서 코드가 실행되어 오류가 발생합니다. – EmmanuelG