Sobes.tech
Junior

Qual é a diferença entre as palavras-chave self e this em PHP?

sobes.tech IA

Resposta da IA

$this refere-se à instância atual do objeto. self refere-se à classe atual (num contexto estático ou dentro de métodos para aceder a membros estáticos).

$this:

  • É usado para aceder às propriedades e métodos de uma instância concreta da classe.
  • Aplica-se dentro de métodos não estáticos.
class MyClass {
    public $instanceProperty = 'Olá';

    public function getInstanceProperty() {
        // Acesso à propriedade da instância atual
        return $this->instanceProperty;
    }
}

self:

  • É usado para aceder às propriedades e métodos estáticos da classe.
  • Aplica-se dentro de métodos estáticos e não estáticos.
class MyClass {
    public static $staticProperty = 'Mundo';

    public static function getStaticProperty() {
        // Acesso à propriedade estática
        return self::$staticProperty;
    }

    public function accessStaticFromInstance() {
        // Acesso à propriedade estática a partir de um método não estático
        return self::$staticProperty;
    }
}

Exemplo de uso conjunto de $this e self:

class Example {
    public $instanceId;
    private static $count = 0;

    public function __construct() {
        // Uso de self para incrementar o contador estático
        self::$count++;
        // Uso de $this para definir a propriedade da instância
        $this->instanceId = self::$count;
    }

    public static function getCount() {
        // Uso de self para obter a propriedade estática
        return self::$count;
    }

    public function getInstanceId() {
        // Uso de $this para obter a propriedade da instância
        return $this->instanceId;
    }
}