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

Argument #1 ($funcionario) must be of type Alura\Banco\Modelos\Funcionario, Alura\Banco\Modelo\Funcionario\Desenvolvedor given

Saudações,

Estou com o seguinte erro:

PHP Fatal error: Uncaught TypeError: Alura\Banco\Service\ControladorDeBonificacoes::adicionaBonificacaoDe(): Argument #1 ($funcionario) must be of type Alura\Banco\Modelos\Funcionario, Alura\Banco\Modelo\Funcionario\Desenvolvedor given [...]

Qual o motivo do erro, visto que, conforme instruído na aula, posso informar como parâmetro um objeto de qualquer classe filha da classe Funcionário. Substituindo public function adicionaBonificacaoDe(Funcionario $funcionario) por public function adicionaBonificacaoDe( $funcionario) elimino o erro, mas esta não me parece ser a solução mais adequada.

<?php

namespace Alura\Banco\Modelo\Funcionario;

use Alura\Banco\Modelo\Funcionario\Funcionario;

class Desenvolvedor extends Funcionario{


    public function calculaBonificacao(): float{

       return $this->recuperaSalario() * 0.05;
    }

    public function sobeDeNivel()
    {
        $this->recebeAumento($this->recuperaSalario() * 0.75);
    }
}
<?php

namespace Alura\Banco\Service;

use Alura\Banco\Modelos\Funcionario;

class ControladorDeBonificacoes
{
    private $totalBonificacoes = 0;

    public function adicionaBonificacaoDe(Funcionario $funcionario)
    {
        $this->totalBonificacoes += $funcionario->calculaBonificacao();
    }

    public function recuperaTotal(): float
    {
        return $this->totalBonificacoes;
    }
}
<?php

namespace Alura\Banco\Modelo\Funcionario;

use Alura\Banco\Modelo\Funcionario\Funcionario;

class Desenvolvedor extends Funcionario{


    public function calculaBonificacao(): float{

       return $this->recuperaSalario() * 0.05;
    }

    public function sobeDeNivel()
    {
        $this->recebeAumento($this->recuperaSalario() * 0.75);
    }
}

Obrigada!

2 respostas
solução!

O erro está nos namespaces, Elaine. Em um arquivo você usa Modelo e em outro você usa Modelos.

Obrigada ♥

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