Metody statyczne i $this w OOP w PHP

Wewnątrz metod statycznych niedostępny jest $this. Dzieje się tak dlatego, że metody statyczne mogą być wywoływane poza kontekstem obiektu, po prostu odwołując się do nazwy klasy.

W metodach zwykłych dostępne są zarówno właściwości i metody statyczne, jak i zwykłe.

Spójrzmy na przykładach. Przykład na metodę zwykłą:

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

Przykład na metodę statyczną:

Test.php<?php
  class Test
  {
    public static $staticProperty = 'static';
    public $usualProperty = 'usual';
    
    public static function method()
    {
      echo self::$staticProperty; // wypisze 'static'
      echo $this->usualProperty;  // zwróci błąd
    }
  }
  
  $test = new Test;
  $test::method();
?>