Statiske metoder og $this i OOP i PHP

Inne i statiske metoder er $this utilgjengelig. Dette skjer fordi statiske metoder kan kalles utenfor konteksten av et objekt, ved bare å referere til klassens navn.

I vanlige metoder er både statiske og vanlige egenskaper og metoder tilgjengelige.

La oss se på eksempler. Eksempel på en vanlig metode:

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

Eksempel på en statisk metode:

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