Статические методы и $this в ООП в PHP

Внутри статических методов недоступен $this. Это происходит из-за того, что статические методы могут вызываться вне контекста объекта, просто обращаясь к имени класса.

В обычных методах доступны как статические, так и обычные свойства и методы.

Давайте посмотрим на примерах. Пример на обычный метод:

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

Пример на статический метод:

Test.php<?php
  class Test
  {
    public static $staticProperty = 'static';
    public $usualProperty = 'usual';
    
    public static function method()
    {
      echo self::$staticProperty; // выведет 'static'
      echo $this->usualProperty;  // выдаст ошибку
    }
  }
  
  $test = new Test;
  $test::method();
?>