Statické metódy a $this v OOP v PHP

Vnútri statických metód nie je prístupný $this. Deje sa tak preto, že statické metódy môžu byť volané mimo kontextu objektu, jednoducho prístupom k názvu triedy.

V obyčajných metódach sú prístupné ako statické, tak aj obyčajné vlastnosti a metódy.

Pozrime sa na príklady. Príklad na obyčajnú metódu:

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

Príklad na statickú metódu:

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