Quando usar self vs $this em PHP?

Em PHP, a palavra-chave “self” e o operador “$this” são usados em contextos diferentes e têm propósitos diferentes.

O “self” é usado dentro de uma classe para se referir à própria classe. É usado principalmente para acessar propriedades e métodos estáticos da classe. Por exemplo:

class Exemplo {
    public static $propriedadeEstatica = 'valor';

    public static function metodoEstatico() {
        echo self::$propriedadeEstatica;
    }
}

Exemplo::metodoEstatico();

Neste exemplo, usamos “self::$propriedadeEstatica” para referenciar a propriedade estática da própria classe.

Por outro lado, o “$this” é usado dentro de um objeto para se referir à instância atual da classe. É usado para acessar propriedades e métodos não estáticos da classe. Por exemplo:

class Exemplo {
    public $propriedade = 'valor';

    public function metodo() {
        echo $this->propriedade;
    }
}

$objeto = new Exemplo();
$objeto->metodo();

Neste exemplo, usamos “$this->propriedade” para referenciar a propriedade do objeto atual.

Portanto, a regra geral é usar “self” para acessar elementos estáticos da classe (métodos, propriedades), enquanto “$this” é usado para acessar elementos não estáticos da classe em um objeto específico. É importante lembrar que o “self” não está associado a uma instância específica, mas sim à classe em si.