Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

autoload.php com problemas

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;
}

}

1 resposta
solução!

o arquivo bonificacoes.php estava na pasta src e deveria estar fora dela, foi corrigido e funcionou.