Na primeira aula, vimos a teoria: a classe SistemaAutenticacao é a planta de um sistema de login. Agora, vamos ver essa planta ser usada para construir o nosso sistema. O código que você forneceu mostra a mágica acontecendo na prática.
1. O que é Instanciar uma Classe?
A linha mais importante no começo do código é a seguinte:
$sistema = new SistemaAutenticacao();
Essa linha é o que chamamos de instanciação. Pense assim:
- A classe
SistemaAutenticacao é a planta de um carro.
- A variável
$sistema é o carro de verdade que você acabou de construir a partir daquela planta.
A palavra-chave new é o comando que o PHP usa para criar um objeto (a instância) a partir de uma classe. A partir de agora, a variável $sistema é um objeto que tem todos os métodos e propriedades definidos na sua classe.
O mesmo acontece aqui:
$usuario1 = new Usuario();
Você está criando um objeto do tipo Usuario. A variável $usuario1 não é mais um texto ou um número; ela é uma representação complexa de um usuário, com seus próprios dados e ações.
2. Colocando os Métodos para Trabalhar
Com os objetos criados, o resto do código é sobre como chamamos os métodos para interagir com eles. O operador -> é a forma de “acessar” um método ou uma propriedade dentro de um objeto.
Adicionando e Acessando Dados
Veja como o objeto $usuario1 é “preenchido” com informações e depois adicionado ao sistema:
// Define as propriedades do objeto $usuario1 usando os métodos "set"
$usuario1->setId(1);
$usuario1->setLogin('usuario1');
$usuario1->setSenha('senha1');
// Usa um método do objeto $sistema para adicionar o objeto $usuario1
$sistema->adicionarUsuario($usuario1);
O método adicionarUsuario() recebe o objeto $usuario1 como um todo, o que torna o código muito mais organizado do que se tivéssemos que passar login, senha e ID separadamente.
Realizando Ações
A autenticação é um exemplo perfeito de como os métodos funcionam.
echo $sistema->autenticar('usuario1', 'senha1') ? "..." : "...";
O PHP executa o método autenticar() do objeto $sistema. Se o método retornar true (sucesso), ele executa a primeira parte do echo. Se retornar false (falha), ele executa a segunda parte.
Gerenciando o Objeto
O restante do código demonstra a flexibilidade de ter esses métodos encapsulados na classe:
$sistema->listarUsuarios(): Chama o método que “busca” todos os usuários e retorna um array. Isso permite que o foreach possa exibir cada um deles.
$sistema->removerUsuario(1): Chama o método que encontra e remove o usuário com o ID 1.
$sistema->redefinirSenha(2, 'novaSenhaSegura'): Chama o método que altera o estado interno de um dos objetos de usuário.
Resumo da Prática
Essa segunda parte da aula nos mostra como as classes saem da teoria e se tornam ferramentas reais e poderosas:
- Criação de Objetos: A palavra-chave
new é usada para criar instâncias de uma classe.
- Interação entre Objetos: Objetos podem ser passados como argumentos para os métodos de outros objetos (
$sistema->adicionarUsuario($usuario1)).
- Execução de Métodos: O operador
-> é usado para “chamar” os métodos que executam as ações definidas na classe.
Com essa estrutura, você cria um código modular e reutilizável. A lógica de autenticação fica toda dentro da classe SistemaAutenticacao, e você pode simplesmente instanciar um novo objeto dela sempre que precisar de um sistema de login, sem precisar reescrever o código.
Agora que você viu a classe em ação, como você acha que poderia usar essa mesma estrutura de classes para gerenciar, por exemplo, um sistema de estoque com produtos?