Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Method 'Ranking::compare()' is not compatible with method 'SplHeap::compare()'.

Depois de criar o ranking Ranking.php logo no public function ja exibe uma mensagem de que o método compare não é compativel com SplHeap.

<?php

class Ranking extends SplHeap {

    public function compare(Musica $musica1, Musica $musica2) {

        if($musica1->getVezesTocada() === $musica2->getVezesTocada()) {
            return 0;
        }

        if($musica1->getVezesTocada() === $musica2->getVezesTocada()) {
            return -1;
        } else {
            return 1;
        }
    }   
}

Mensagem no console do vscode

Method 'Ranking::compare()' is not compatible with method 'SplHeap::compare()'.
6 respostas

Olá Gustavo,

Não sei se isso resolve, mas testa trocar o operador

De: === Por : <

no segundo if.

Veja se isso ajuda,

Carlos

Ola Carlos,

Agradeço a ajuda, mas não deu certo.

Mas alguem pode ajudar com o problema?

Bom dia Gustavo,

Acho que o problema está na declaração do método, você colocou a classe Musica para os parâmetros.

Como você está sobreescrevento um método abstrato da classe abstrata SplHeap, o PHP não permitirá mudar o tipo dos parâmetros.

Tira a definição de tipo do parâmetro e deveria funcionar.

Abraço,

Carlos

Putz, era isso mesmo Carlos.

Mas porque na aula que o Giovanni não mostou essa incompatibidade, fiz igualmente a aula.

Mas enfim, deu certo. Obrigado.

solução!

Beleza Gustavo, obrigado pelo feedback.

Por favor marca como resolvido.

Abraço.

Carlos Ruesta