6
respostas

class SplFixedArray naõ pode ser convertida para string | Método baixarMusicas

Minha Classe TocadorMusica e metodo está igual da aula e está dando esse erro de conversão, por que isso acontece?

Recoverable fatal error: Object of class SplFixedArray could not be converted to string in C:\developer\Apache24\htdocs\Collections\TocadorMusica.php on line 99

Método

public function baixarMusicas()
    {
        if($this->musicas->count() > 0){
            for($this->musicas->rewind(); $this->musicas->valid(); $this->musicas->next()){
                $this->filaDeDownloads->push($this->musicas->current());
            }

            for($this->filaDeDownloads->rewind(); $this->filaDeDownloads->valid(); $this->filaDeDownloads->next()) {
                echo "Baixando: " . $this->filaDeDownloads->current() . "...<br>";
        }
        }else{
            echo "Nenhuma música encontrada para baixar";
        }

    }
6 respostas

Oi Bruno, tudo bem? esse erro normalmente acontece quando é executada a função echo em alguma variável que não é do tipo string.

Você pode nos mandar o seu código inteiro? assim consigo ver melhor o que pode ter ocorrido.

Claro! Segue código completo aqui

Bruno, acho que o código que está no seu GitHub não está atualizado, não encontrei o método baixarMusicas por lá, executei os códigos que estavam no repositório e todos executaram bem.

Por favor, dê um novo commit e push para o GitHub com o código que você estava escrevendo no momento em que teve o erro.

Baseado no que você postou, Bruno, acredito que o erro esteja aqui:

echo "Baixando: " . $this->filaDeDownloads->current() . "...<br>";

A lista em $this->filaDeDownloads contém objetos do tipo Musica? Se sim, você precisa implementar lá na classe Musica o método __toString() que permite que um objeto seja representado como string.

Caso não queira seguir essa abordagem, você pode mudar seu código para

echo "Baixando: " . $this->filaDeDownloads->current()->getNome() . "...<br>";

Ou qualquer outro método que dê acesso à informação da música.d

Fala Giovani, tudo bem? Está atualizado!

Vinicius, alterando a abordagem da um novo erro:

Fatal error: Uncaught Error: Call to undefined method SplFixedArray::getNome() in C:\developer\Apache24\htdocs\Collections\TocadorMusica.php:99 Stack trace: #0 C:\developer\Apache24\htdocs\Collections\aula3.php(15): TocadorMusica->baixarMusicas(Object(SplFixedArray)) #1 {main} thrown in C:\developer\Apache24\htdocs\Collections\TocadorMusica.php on line 99