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!