Olá, Estou com um erro no arquivo, após realizar as etapas da aula, ao fazer o teste para verificar se o sistema consegue atribuir as bonificações corretamente, recebi o seguinte erro:
PHP Fatal error: Uncaught Error: Typed property Alura\Banco\Modelo\Funcionario::$salario must not be accessed before initialization in D:\Alura\projeto\src\Modelo\Funcionario.php:36
Stack trace:
#0 D:\Alura\projeto\src\Service\ControladorBonificacoes.php(13): Alura\Banco\Modelo\Funcionario->calcularBonificacao()
#1 D:\Alura\projeto\testeBonificacoes.php(13): Alura\Banco\Service\ControladorBonificacoes->adicionarBonificacao(Object(Alura\Banco\Modelo\Funcionario))
#2 {main}
thrown in D:\Alura\projeto\src\Modelo\Funcionario.php on line 36
Fatal error: Uncaught Error: Typed property Alura\Banco\Modelo\Funcionario::$salario must not be accessed before initialization in D:\Alura\projeto\src\Modelo\Funcionario.php:36
Stack trace:
#0 D:\Alura\projeto\src\Service\ControladorBonificacoes.php(13): Alura\Banco\Modelo\Funcionario->calcularBonificacao()
#1 D:\Alura\projeto\testeBonificacoes.php(13): Alura\Banco\Service\ControladorBonificacoes->adicionarBonificacao(Object(Alura\Banco\Modelo\Funcionario))
#2 {main}
thrown in D:\Alura\projeto\src\Modelo\Funcionario.php on line 36
Process finished with exit code 255
Tentei por umas duas horas tentar identificar qual poderia ser o problema, mas sem sucesso, gostaria da ajuda de vocês pra descobrir o que fiz de errado. Segue abaixo os códigos referentes às classes.
Funcionário:
<?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->cargo = $salario;
}
public function retornarCargo() : string
{
return $this->cargo;
}
public function alterarNome(string $nome):void
{
$this->validarNome($nome);
$this->nome = $nome;
}
public function retornarSalario(): float
{
return $this->salario;
}
public function calcularBonificacao(): float
{
return $this->salario * 0.1;
}
}
ControladorBonificacoes:
<?php
namespace Alura\Banco\Service;
use Alura\Banco\Modelo\Funcionario;
class ControladorBonificacoes
{
private float $totalBonificacao = 0;
public function adicionarBonificacao(Funcionario $funcionario)
{
$this->totalBonificacao += $funcionario->calcularBonificacao();
}
public function retornarTotalBonificacoes(): float
{
return $this->totalBonificacao;
}
}
testeBonificacoes:
<?php
require_once 'autoload.php';
use Alura\Banco\Service\ControladorBonificacoes;
use Alura\Banco\Modelo\{Funcionario, Cpf};
$func01 = new Funcionario('João', new Cpf('123.456.789-10'),'Desenvolvedor', 3000);
$func02 = new Funcionario('José', new Cpf('123.456.789-11'), 'Gerente', 5000);
$controlador = new ControladorBonificacoes();
$controlador->adicionarBonificacao($func01);
$controlador->adicionarBonificacao($func02);
echo $controlador->retornarTotalBonificacoes();
Fico na aguardo pelo auxílio e já agradeço pela ajuda.