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

Problema ao chamar a interface.

Olá, estou com um problema ao usa o 'use' para identificar a interface Autenticavel.php.

<?php

namespace classe\sistemaInterno;

use classe\abstratas\Funcionario;
use classe\abstratas\FuncionarioAutenticavel;

use classe\interface\Autenticavel;


class GerenciadorBonificacao implements Autenticavel{

    public $totalBonificacoes;
    private $autenticado;

    public function registrar(Funcionario $funcionario){
        if ($this->autenticado) {
            $this->totalBonificacoes += $funcionario->getBonificacao();
        }else{
            throw new \Exception("Você não esta logado");

        }

    }

    public function getTotalBonificacoes(){
        return $this->totalBonificacoes;
    }

    public function AutentiqueAqui(FuncionarioAutenticavel $funcionario,$senha){

        $this->autenticado = $funcionario->autenticar($senha); 

    }
}

?>
<?php

namespace classe\interface;

use classe\abstratas\FuncionarioAutenticavel;

interface Autenticavel{


    public function AutentiqueAqui(FuncionarioAutenticavel $funcionario,$senha);

}
?>

Ele dá esse erro.

Parse error: syntax error, unexpected 'interface' (T_INTERFACE), expecting identifier (T_STRING) or '{' in C:\Users\Usuario\Desktop\Alura\PHP-Orientado-a-objeto2\classe\sistemaInterno\GerenciadorBonificacao.php on line 8

1 resposta
solução!

Oi Lucas, tudo bom?

O problema aqui, é que a palavra interface é reservada pelo PHP para a declaração de interfaces. Quando criamos um namespace no sistema que possui esse nome estamos confundindo o interpretador, tenta trocar o namespace de interface para interfaces ou qualquer outra coisa que não esteja nessa lista:

https://www.php.net/manual/pt_BR/reserved.keywords.php

Abraço =)