Statiskās metodes un $this OOP PHP

Statisko metožu iekšienē nav pieejams $this. Tas notiek tāpēc, ka statiskās metodes var tikt izsauktas ārpus objekta konteksta, vienkārši pievēršoties klases vārdam.

Parastajās metodēs ir pieejamas gan statiskās, gan parastās īpašības un metodes.

Apskatīsimies piemēros. Piemērs ar parasto metodi:

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

Piemērs ar statisko metodi:

Test.php<?php
  class Test
  {
    public static $staticProperty = 'static';
    public $usualProperty = 'usual';
    
    public static function method()
    {
      echo self::$staticProperty; // izvadīs 'static'
      echo $this->usualProperty;  // izdos kļūdu
    }
  }
  
  $test = new Test;
  $test::method();
?>