Métodos Estáticos e $this em POO no PHP

Dentro de métodos estáticos, $this não está disponível. Isso ocorre porque métodos estáticos podem ser chamados fora do contexto de um objeto, simplesmente referenciando o nome da classe.

Em métodos comuns, tanto propriedades e métodos estáticos quanto os comuns estão disponíveis.

Vamos ver alguns exemplos. Exemplo com um método comum:

Test.php<?php
  class Test
  {
    public static $staticProperty = 'static';
    public $usualProperty = 'usual';
    
    public function method()
    {
      echo self::$staticProperty; // exibirá 'static'
      echo $this->usualProperty;  // exibirá 'usual'
    }
  }
  
  $test = new Test;
  $test->method();
?>

Exemplo com um método estático:

Test.php<?php
  class Test
  {
    public static $staticProperty = 'static';
    public $usualProperty = 'usual';
    
    public static function method()
    {
      echo self::$staticProperty; // exibirá 'static'
      echo $this->usualProperty;  // retornará um erro
    }
  }
  
  $test = new Test;
  $test::method();
?>