Méthodes statiques et $this en POO en PHP
À l'intérieur des méthodes statiques, $this n'est pas accessible.
Cela se produit parce que les méthodes statiques
peuvent être appelées en dehors du contexte d'un objet,
simplement en se référant au nom de la classe.
Dans les méthodes ordinaires, les propriétés et méthodes statiques ainsi que ordinaires sont accessibles.
Regardons des exemples. Exemple avec une méthode ordinaire :
<?php
class Test
{
public static $staticProperty = 'static';
public $usualProperty = 'usual';
public function method()
{
echo self::$staticProperty; // affichera 'static'
echo $this->usualProperty; // affichera 'usual'
}
}
$test = new Test;
$test->method();
?>
Exemple avec une méthode statique :
<?php
class Test
{
public static $staticProperty = 'static';
public $usualProperty = 'usual';
public static function method()
{
echo self::$staticProperty; // affichera 'static'
echo $this->usualProperty; // générera une erreur
}
}
$test = new Test;
$test::method();
?>