Metody statyczne i $this w OOP w PHP
Wewnątrz metod statycznych niedostępny jest $this.
Dzieje się tak dlatego, że metody statyczne
mogą być wywoływane poza kontekstem obiektu,
po prostu odwołując się do nazwy klasy.
W metodach zwykłych dostępne są zarówno właściwości i metody statyczne, jak i zwykłe.
Spójrzmy na przykładach. Przykład na metodę zwykłą:
<?php
class Test
{
public static $staticProperty = 'static';
public $usualProperty = 'usual';
public function method()
{
echo self::$staticProperty; // wypisze 'static'
echo $this->usualProperty; // wypisze 'usual'
}
}
$test = new Test;
$test->method();
?>
Przykład na metodę statyczną:
<?php
class Test
{
public static $staticProperty = 'static';
public $usualProperty = 'usual';
public static function method()
{
echo self::$staticProperty; // wypisze 'static'
echo $this->usualProperty; // zwróci błąd
}
}
$test = new Test;
$test::method();
?>