Olá,
Por alguma razão, estou recebendo um erro quando defino o tipo Funcionario na função "adicionaBonificacaoDe" (como feito na aula), mas quando deixo sem o tipo, o teste roda. Poderiam me esclarecer o porque disso? Desde já, muito obrigado.
Erro:
PHP Fatal error: Uncaught TypeError: Argument 1 passed to Alura\Banco\Service\ControladorDeBonificacoes::adicionaBonificacaoDe() must be an instance of Alura\Banco\Service\ControladorDeBonificacoes, instance of Alura\Banco\Modelo\Funcionario given, called in x\bonificacoes.php on line 23 and defined in x\src\Service\ControladorDeBonificacoes.php:9
Funcionario.php
<?php
namespace Alura\Banco\Modelo;
class Funcionario extends Pessoa
{
private string $cargo;
private float $salario;
public function __construct(string $nome, Cpf $cpf, string $cargo, float $salario)
{
parent::__construct($nome, $cpf);
$this->cargo = $cargo;
$this->salario = $salario;
}
public function recuperaCargo(): string
{
return $this->cargo;
}
protected function alteraNome(string $nome): void
{
$this->validaNomeTitular($nome);
$this->nome = $nome;
}
public function recuperaSalario(): float
{
return $this->salario;
}
public function calculaBonificacao(): float
{
return $this->salario * 0.1;
}
}
ControladorDeBonificacoes.php
<?php
namespace Alura\Banco\Service;
class ControladorDeBonificacoes
{
private $totalBonificacoes = 0;
public function adicionaBonificacaoDe($funcionario)
{
$this->totalBonificacoes += $funcionario->calculaBonificacao();
}
public function recuperaTotal(): float
{
return $this->totalBonificacoes;
}
}
bonificacoes.php
<?php
require_once 'autoload.php';
use Alura\Banco\Service\ControladorDeBonificacoes;
use Alura\Banco\Modelo\{Cpf, Funcionario};
$umFuncionario = new Funcionario(
'Vinicius Dias',
new Cpf('123.456.789-10'),
'Desenvolvedor',
1000
);
$umaFuncionaria = new Funcionario(
'Patricia',
new Cpf('124.453.329-10'),
'Gerente',
3000
);
$controlador = new ControladorDeBonificacoes();
$controlador->adicionaBonificacaoDe($umFuncionario);
$controlador->adicionaBonificacaoDe($umaFuncionaria);
echo $controlador->recuperaTotal();