Bom dia,
Após criar a classe ControladorDeBonificacoes e fazer as devidas alterações na classe Funcionario, estou com o seguinte erro ao tentar executar o arquivo bonificacoes.php:
PHP Fatal error: Uncaught TypeError: Argument 1 passed to Alura\Banco\Service\ControladorDeBonificacoes::adicionaBonificacaoDe() must be an instance of Alura\Banco\Service\Funcionario, instance of Alura\Banco\Modelo\Funcionario given, called in /home/helio/Documentos/PHP_Alura/PHP_OO/bonificacoes.php on line 25 and defined in /home/helio/Documentos/PHP_Alura/PHP_OO/src/Service/ControladorDeBonificacoes.php:9 Stack trace:
#0 /home/helio/Documentos/PHP_Alura/PHP_OO/bonificacoes.php(25): Alura\Banco\Service\ControladorDeBonificacoes->adicionaBonificacaoDe()
#1 {main} thrown in /home/helio/Documentos/PHP_Alura/PHP_OO/src/Service/ControladorDeBonificacoes.php on line 9
Abaixo, segue minha classe Funcionario:
<?php
namespace Alura\Banco\Modelo;
class Funcionario extends Pessoa
{
private $cargo;
private $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;
}
public function recuperaSalario(): float
{
return $this->salario;
}
public function calculaBonificacao(): float
{
return $this->salario * 0.1;
}
}
Abaixo o ControladorDeBonificacoes:
<?php
namespace Alura\Banco\Service;
class ControladorDeBonificacoes
{
private $totalBonificacoes = 0;
public function adicionaBonificacaoDe(Funcionario $funcionario)
{
$this->totalBonificacoes += $funcionario->calculaBonificacao();
}
public function recuperaTotal(): float
{
return $this->totalBonificacoes;
}
}
e na sequencia como está meu arquivo 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('987.654.321-10'),
'Gerente',
3000
);
$controlador = new ControladorDeBonificacoes();
$controlador->adicionaBonificacaoDe($umFuncionario);
$controlador->adicionaBonificacaoDe($umaFuncionaria);
echo $controlador->recuperaTotal();