Quando executo o bonificacoes.php com 'autoload.php' acontece esse erro: Fatal error: Uncaught Error: Class "Alura\Banco\Modelo\Funcionario" not found in C:\Alura\PHP\OrientcaoObjeto\src\bonificacoes.php:15 Stack trace:
#0 {main} thrown in C:\Alura\PHP\OrientcaoObjeto\src\bonificacoes.php on line 15
Se eu coloco os arquivos dependentes dessa forma funciona: require_once 'src/Modelo/CPF.php'; require_once 'src/Modelo/Pessoa.php'; require_once 'src/Modelo/Funcionario.php'; require_once 'src/Service/ControladorDeBonificacoes.php';
Eu fiz uma parada no autoload.php para ver o que ele trazia no caminho: src\Modelo\Funcionario.php
Então aparentemente ele está passando no autoload.php.
Arquivo bonificaoes.php: <?php require_once 'src/Modelo/CPF.php'; require_once 'src/Modelo/Pessoa.php'; require_once 'src/Modelo/Funcionario.php'; require_once 'src/Service/ControladorDeBonificacoes.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();
arquivo funcionario.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()
{
return $this->cargo;
}
public function recuperaSalario(): float
{
return $this->salario;
}
public function alteraNome(string $nome): string
{
$this->validaNomeTitular($nome);
$this->nome = $nome;
}
public function calculaBonificacao()
{
return $this->salario * 0.1;
}
}