Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Erro

Eu não entendo porque dá esse erro:

PHP Fatal error: Uncaught Error: Class 'Alura\Banco\Service\ControladorDeBonificacoes' not found in C:\Users\Rachel\eclipse-workspace3\projeto\bonificacoes.php:20 Stack trace:

#0 {main} thrown in C:\Users\Rachel\eclipse-workspace3\projeto\bonificacoes.php on line 20

Fatal error: Uncaught Error: Class 'Alura\Banco\Service\ControladorDeBonificacoes' not found in C:\Users\Rachel\eclipse-workspace3\projeto\bonificacoes.php:20 Stack trace:

#0 {main} thrown in C:\Users\Rachel\eclipse-workspace3\projeto\bonificacoes.php on line 20

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


namespace Alura\Banco\Modelo;
require_once 'autoload.php';


class Funcionario extends Pessoa
{
    private $cargo;
    private $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(): string
    {
        return $this->cargo;
    }

    public function alteraNome(string $nome): void
    {
        $this->validaNomeTitular($nome);
        $this->nome = $nome;
    }

    public function recuperaSalario(): float
    {
        return $this->salario;
    }

    public function calculaBonificacao(): float
    {
        return $this->salario * 0.1;

    }

}
<?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();
2 respostas
solução!

Evandro, tudo bem contigo?

Vou tentar te ajudar aqui, embora para mim o erro não esta evidente. O erro retornado é:

Class 'Alura\Banco\Service\ControladorDeBonificacoes' not found

E ocorre na linha 20 do teu arquivo bonificacoes.php:

$controlador = new ControladorDeBonificacoes();

Ou seja, quando vcocê tenta instanciar este $controlador ele não encontra a classe.

Para começar, certifique-se de que o teu arquivo ControladorDeBonificacoes.php esta dentro da pasta:

\src\Service\ControladorDeBonificacoes.php

Parece-me pode ser o erro. Me parece esta empregando os namespaces e uses corretamente. Talvez o arquivo da classe não esteja na localização correta.

Não deixe de nos apontar o resultado, se preciso de mais ajuda. Se não marcar o tópico como resolvido, ou indique o erro/solução que encontrou, certamente ajudará outros.

Um abs,

Valeu, achei que era isso mesmo. Uso o eclipse e é meio confuso como ele cria os diretórios, só funcionou quando baixei o projeto no final da aula.