Boa noite alguem pode me ajudar com esse erro. Já estou a horas travado e não queria continuar sem resolver. Estou buscando em outro lugares tambem. Obrigado.
PHP Fatal error: Uncaught Error: Typed property Alura\Banco\Modelo\Funcionario::$salario must not be accessed before initialization in /home/cast/Área de Trabalho/php-introducao-oo/src/Modelo/Funcionario.php:32 Stack trace:
#0 /home/cast/Área de Trabalho/php-introducao-oo/src/Service/ControladorDeBonificacoes.php(13): Alura\Banco\Modelo\Funcionario->calculaBonificacao()
#1 /home/cast/Área de Trabalho/php-introducao-oo/bonificacoes.php(26): Alura\Banco\Service\ControladorDeBonificacoes->adicionaBonificacaoDe()
#2 {main} thrown in /home/cast/Área de Trabalho/php-introducao-oo/src/Modelo/Funcionario.php on line 32
Arquivos----------- Funcionario.php <?php
namespace Alura\Banco\Modelo;
class Funcionario extends Pessoa { private string $cargo; private float $salario;
public function __contruct(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 alteraNome(string $nome): void
{
$this->validaNomeTitular($nome);
$this->nome = $nome;
}
public function calculaBonificacao(): float
{
return $this->salario * 0.1;
}
public function recuperaSalario(): float
{
return $this->salario;
}
}
ControladorDeBonificacoes.php <?php
namespace Alura\Banco\Service;
use Alura\Banco\Modelo\Funcionario;
class ControladorDeBonificacoes { private $totalBonificacoes = 0;
public function adicionaBonificacaoDe(Funcionario $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 );
$umaFuncionario = new Funcionario( 'Patricia', new CPF('987.654.321-01'), 'Gerente', 3000 );
$controlador = new ControladorDeBonificacoes(); $controlador->adicionaBonificacaoDe($umFuncionario); $controlador->adicionaBonificacaoDe($umaFuncionario);
echo $controlador->recuperaTotal();