Statikus metódusok és $this az OOP-ban PHP-ben

A statikus metódusokon belül a $this nem elérhető. Ez azért történik, mert a statikus metódusok objektum kontextusán kívül is meghívhatók, egyszerűen csak az osztály nevére hivatkozva.

A normál metódusokban mind a statikus, mind a normál tulajdonságok és metódusok elérhetők.

Nézzünk példákat. Példa egy normál metódusra:

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

Példa egy statikus metódusra:

Test.php<?php
  class Test
  {
    public static $staticProperty = 'static';
    public $usualProperty = 'usual';
    
    public static function method()
    {
      echo self::$staticProperty; // kiírja 'static'-ot
      echo $this->usualProperty;  // hibát jelez
    }
  }
  
  $test = new Test;
  $test::method();
?>