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

Classe Autenticador

Primeiro foi criado o Autenticador.php, no final ele ficou desse jeito

namespace Alura\Banco\Modelo\Service;

use Alura\Banco\Modelo\Autenticavel;

class Autenticador
{

    public function tentaLogin(Autenticavel $autenticavel, string $senha ):void
    {

            if ($autenticavel->podeAutenticar($senha)){

                echo "Ok. Usuário logado no sistema";

            } else {

                echo "Ops. Senha incorreta";
            }
    }
}

Depois da criação dele foi feita a Interface autenticavel

namespace Alura\Banco\Modelo;


interface Autenticavel
{

    public function podeAutenticar(string $senha): bool;
}

Oque essa interface retorna como valor? E por qual motivo ela recebe uma string $senha

Depois disso ela passa pelos funcionarios e no Autenticador.php, ele usa ela como um dos parametros e retorna se a pessoa pode acessar ou não

3 respostas

Pedro, não entendi sua dúvida. Você pode reformular, por favor?

solução!

Fala Pedro, posso ter compreendido errado sua dúvida mas acho que você não pegou a ideia sobre o que são as interfaces.

Oque essa interface retorna como valor? E por qual motivo ela recebe uma string $senha

Interfaces não retornam valores, é um tipo de abstração para coisas que compartilham comportamentos em comum.

Por exemplo, todos automóveis eles podem se locomover e buzinar, possuem esses comportamentos em comum, logo posso criar uma interface chamada de Automóvel e nessa interface terá dois métodos chamados de "locomove" e "buzina".

interface Automovel
    {
        public function locomove(): void;
        public function buzina(): string;
    }

Voltando ao exemplo do Vinicius, ele criou uma interface chamada Autenticavel para abstrair um comportamento maior do sistema, objetos que podem ser autenticados. Normalmente em um sistema vários objetos de tipos diferentes podem se autenticar, por exemplo, em um sistema escolar um aluno pode se autenticar, um professor pode se autenticar, diretor, etc... Então faz sentido ter uma interface para esse comportamento.

O método "podeAutenticar" recebe a string $senha por que a lógica de autenticação só necessitava de uma senha, mas poderia ser uma senha e um nome, etc.

Dei uma lida no código e consegui entender melhor, obrigado pela ajuda. :)