Статични методи и $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();
?>