1
resposta

Erro ao acessar um dos atributos utilizando o $this

Olá! Ao analisar o método abaixo, deparei com uma dúvida

public function getAssistidoAttribute($assistido): bool 
 {
    return $assistido;
 }

Por que o método acima funciona e o método a seguir, não?

public function getAssistidoAttribute(): bool
 {
     //Repare que estou tentando acessar o atributo "assistido"
    return $this->assistido;
 }

Devo mencionar que, se eu tentar acessar qualquer outro atributo que não seja o 'assistido', utilizando o $this, dentro do método acima, funciona! (veja o exemplo abaixo)

public function getAssistidoAttribute() : bool
 {
        //Não causa erro
        dump($this->id, $this->temporada, $this->numero, $this->serie_id);

        //Nesta linha dá o erro "Undefined property: App\Episodio::$assistido"
        dump($this->assistido);

        return (bool) $this->assistido;
 }

Então, qual é o mistério?

Desde já, agradeço!

1 resposta

Jackson, boa tarde!

Ele funciona, pois a variável $assistido não é um atributo e sim um parâmetro passado a função, e que o Laravel mesmo resolve pra você, tanto que se você olhar na sua classe não tem um atributo chamado $assistido.

Já os outros atributos que não dão erro, funcionam pois eles são acessados pela abstração do Laravel, que gerencia tudo isso para o desenvolvedor

Espero ter ajudado e bons estudos!

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