Metodi Statici e $this nella OOP in PHP

All'interno dei metodi statici $this non è accessibile. Ciò accade perché i metodi statici possono essere richiamati al di fuori del contesto di un oggetto, semplicemente facendo riferimento al nome della classe.

Nei metodi ordinari sono accessibili sia le proprietà e i metodi statici, che quelli ordinari.

Vediamo alcuni esempi. Esempio con un metodo ordinario:

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

Esempio con un metodo statico:

Test.php<?php
  class Test
  {
    public static $staticProperty = 'static';
    public $usualProperty = 'usual';
    
    public static function method()
    {
      echo self::$staticProperty; // stamperà 'static'
      echo $this->usualProperty;  // genererà un errore
    }
  }
  
  $test = new Test;
  $test::method();
?>