Statiniai metodai ir $this OOP PHP

Statinėse metodose neprieinamas $this. Taip yra dėl to, kad statiniai metodai gali būti iškviečiami už objekto konteksto, tiesiog kreipiantis į klasės pavadinimą.

Įprastuose metoduose prieinamos tiek statinės, tiek įprastos savybės ir metodai.

Pažiūrėkime pavyzdžiais. Pavyzdys su įprastu metodu:

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

Pavyzdys su statiniu metodu:

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