Statické metody a $this v OOP v PHP
Uvnitř statických metod není dostupný $this.
To je způsobeno tím, že statické metody
lze volat mimo kontext objektu,
pouhým přístupem k názvu třídy.
V běžných metodách jsou dostupné jak statické, tak běžné vlastnosti a metody.
Podívejme se na příklady. Příklad na běžnou metodu:
<?php
class Test
{
public static $staticProperty = 'static';
public $usualProperty = 'usual';
public function method()
{
echo self::$staticProperty; // vypíše 'static'
echo $this->usualProperty; // vypíše 'usual'
}
}
$test = new Test;
$test->method();
?>
Příklad na statickou metodu:
<?php
class Test
{
public static $staticProperty = 'static';
public $usualProperty = 'usual';
public static function method()
{
echo self::$staticProperty; // vypíše 'static'
echo $this->usualProperty; // vrátí chybu
}
}
$test = new Test;
$test::method();
?>