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

Fatal Error Call to undefined function push()

O codigo esta exatamente como o da aula, mas ocorre esse seguinte erro: "Fatal error: Uncaught Error: Call to a member function push() on null in G:\xampp\htdocs\curso\Alura\PHP\php-collections\TocadorDeMusica.php:14 Stack trace: #0 G:\xampp\htdocs\curso\Alura\PHP\php-collections\index.php(18): TocadorDeMusica->adicionarMusica(Object(SplFixedArray)) #1 {main} thrown in G:\xampp\htdocs\curso\Alura\PHP\php-collections\TocadorDeMusica.php on line 14"

<?php

class TocadorDeMusica{

    private $musicas;

    public function __contruct(){
        $this->musicas = new SplDoublyLinkedList();
        $this->musicas->rewind();
    }

    public function adicionarMusica(SplFixedArray $musicas) {
        for($musicas ->rewind() ; $musicas->valid() ; $musicas->next()) {
            $this->musicas->push($musicas->current());
        }
    }

    public function tocadorMusica() {
        if($this->musicas->count() === 0) { 
            echo "Erro, nenhuma música no Tocador";
        } else { 
            echo "Tocando música: " . $this->musicas->current();
        }
    }
}
1 resposta
solução!

Olá Denilson,

A função construtor está faltando. Perceba que escreveu

public function __contruct() {}

e está faltando um "s":

public function __construct() {}

Nesse caso o PHP não reclama, mas também não instancia o objeto e consequententemente a propriedade "musicas" fica null.