Statičke metode i $this u OOP u PHP-u

Unutar statičkih metoda $this nije dostupan. Ovo se dešava jer se statičke metode mogu pozvati van konteksta objekta, jednostavnim pozivanjem na ime klase.

U običnim metodama su dostupna i statička, i obična svojstva i metode.

Pogledajmo na primerima. Primer sa običnom metodom:

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

Primer sa statičkom metodom:

Test.php<?php
  class Test
  {
    public static $staticProperty = 'static';
    public $usualProperty = 'usual';
    
    public static function method()
    {
      echo self::$staticProperty; // ispisaće 'static'
      echo $this->usualProperty;  // prikazaće grešku
    }
  }
  
  $test = new Test;
  $test::method();
?>