Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Palavra chave 'self'.

Qual é a diferença entre o 'this' e o 'self'?

1 resposta
solução!

Eu ia tentar te explicar mas achei uma resposta muito mais completa no stackoverflow: https://pt.stackoverflow.com/questions/575/quando-usar-self-vs-this-em-php

Segue:

De forma simplificada, $this se refere ao objeto (instância) atual, e self se refere à classe. Portanto, como regra geral, usa-se $this para acessar membros (atributos, métodos) da instância e self para acessar membros estáticos.

Herança Quando se usa herança, no entanto, há diferença entre usar self e $this ao chamar um método da instância:

self::metodo() chama o metodo() da classe atual; $this->metodo() chama o metodo() da classe usada para instanciar o objeto que está sendo executado (que pode ser uma subclasse da classe onde a chamada é feita). Você pode descobrir que classe é essa usando get_class($this). Exemplo:

<?php
class Animal {
  public function teste() {
    echo "\$this é instância de " . get_class($this) . "\n";

    // chama Animal::fala(), independentemente do
    // tipo da instância
    echo "self::fala(): ";
    self::fala();

    // chama fala() na classe usada pra instanciar
    // este objeto
    echo "\$this->fala(): ";
    $this->fala();
  }
  public function fala() {
    echo "Oi\n";
  }
}

class Gato extends Animal {
  public function fala() {
    echo "Miau\n";
  }
}

// Nesse caso, self != get_class($this)
// - self == Animal
// - get_class($this) == Gato
$gato = new Gato();
$gato->teste();

echo "\n";

// Nesse caso, self == get_class($this) == Animal
$animal = new Animal();
$animal->teste();
?>

Resultado:

$this é instância de Gato
self::fala(): Oi
$this->fala(): Miau

$this é instância de Animal
self::fala(): Oi
$this->fala(): Oi

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software