Erro apresentado no Prompt
>php Bonificacoes.php
PHP Fatal error: Uncaught TypeError: Argument 2 passed to Alura\Banco\Modelo\Funcionario::__construct() must be of the type string, object given, called in C:\Users\stefan.reis\Documents\cursos\php\projeto\Bonificacoes.php on line 13 and defined in C:\Users\stefan.reis\Documents\cursos\php\projeto\src\Modelo\Funcionario.php:10
Stack trace:
#0 C:\Users\stefan.reis\Documents\cursos\php\projeto\Bonificacoes.php(13): Alura\Banco\Modelo\Funcionario->__construct('Vinicius Dias', Object(Alura\Banco\Modelo\CPF), 'Desenvolvedor', 1000)
#1 {main}
thrown in C:\Users\stefan.reis\Documents\cursos\php\projeto\src\Modelo\Funcionario.php on line 10
Fatal error: Uncaught TypeError: Argument 2 passed to Alura\Banco\Modelo\Funcionario::__construct() must be of the type string, object given, called in C:\Users\stefan.reis\Documents\cursos\php\projeto\Bonificacoes.php on line 13 and defined in C:\Users\stefan.reis\Documents\cursos\php\projeto\src\Modelo\Funcionario.php:10
Stack trace:
#0 C:\Users\stefan.reis\Documents\cursos\php\projeto\Bonificacoes.php(13): Alura\Banco\Modelo\Funcionario->__construct('Vinicius Dias', Object(Alura\Banco\Modelo\CPF), 'Desenvolvedor', 1000)
#1 {main}
thrown in C:\Users\stefan.reis\Documents\cursos\php\projeto\src\Modelo\Funcionario.php on line 10
=========================================================== Conteúdo do arquivo Bonificações.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();
=========================================================== Conteúdo do arquivo 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;
}
}
===========================================================
Conteúdo do arquivo Funcionário.php
namespace Alura\Banco\Modelo;
class Funcionario extends Pessoa
{
private $cargo;
private $salario;
public function __construct(string $nome, string $cpf, string $cargo, float $salario)
{
parent::__construct($nome, $cpf);
$this->cargo = $cargo;
$this->salario = $salario;
}
/*
public function recuperaNome(): string
{
return $this->nome;
}
public function recuperaCpf(): string
{
return $this->cpf;
}
*/
public function recuperaCargo(): string
{
return $this->cargo;
}
public function alteraNome(string $nome): void
{
$this->validaNome($nome);
$this->nome = $nome;
}
public function recuperaSalario(): float
{
return $this->salario;
}
public function calculaBonificacao(): float
{
return $this->salario * 0.1;
}
}