Métodos Estáticos e $this em POO no PHP
Dentro de métodos estáticos, $this não está disponível.
Isso ocorre porque métodos estáticos
podem ser chamados fora do contexto de um objeto,
simplesmente referenciando o nome da classe.
Em métodos comuns, tanto propriedades e métodos estáticos quanto os comuns estão disponíveis.
Vamos ver alguns exemplos. Exemplo com um método comum:
<?php
class Test
{
public static $staticProperty = 'static';
public $usualProperty = 'usual';
public function method()
{
echo self::$staticProperty; // exibirá 'static'
echo $this->usualProperty; // exibirá 'usual'
}
}
$test = new Test;
$test->method();
?>
Exemplo com um método estático:
<?php
class Test
{
public static $staticProperty = 'static';
public $usualProperty = 'usual';
public static function method()
{
echo self::$staticProperty; // exibirá 'static'
echo $this->usualProperty; // retornará um erro
}
}
$test = new Test;
$test::method();
?>