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

Sobre Models

Boa tarde!

Fiz aqui os treinamentos de PDO e MVC, mas eles não são complementares. Por isso estou com dúvidas em MVC com PDO.

Considerando o padrão MVC para gestão de usuários, temos: uma view, um controller e um model.

Minha dúvida está no model.

Considerando o model Usuario, temos:

  • Atributos: $id, $nome, $email.
  • Métodos acessores: [getters e setters] para acessar seus atributos.
  • Outros métodos: para [inserir, excluir, editar, etc] um usuário.

Exemplo para listar um usuário:

public function listarUsuario($id) {
// aqui vai o código da consulta que retorna para o controller.
}

A dúvida: Se precisamos listar vários usuários, devo criar um método neste mesmo model ou criar um novo model com métodos para tratar vários usuários?

Se for o caso, eu o nome do model deve ser no plural?

4 respostas
solução!

Fala, Flavio.

Vou ser muito sincero: Ignora tudo que foi ensinado no curso de PDO. rs

Péssimas práticas foram ensinadas lá, utilizando conceitos errados tanto de web quanto de acesso a dados.

Um novo curso de PDO já foi gravado e está prestes a ser lançado.

O padrão MVC separa 3 grandes camadas (o que não quer dizer que só temos 3 arquivos para cada funcionalidade):

  • Model: A camada que possui entidades, repositórios, services, etc. Essa é a camada que faz o negócio funcionar
  • View: Camada que faz com que os detalhes da model sejam visualizados de alguma forma: HTML, JSON, XML, etc.
  • Controller: É a camada que trata o protocolo HTTP. Essa camada recebe uma requisição, chama os responsáveis pela lógica de negócio (que estão na camada de model) e devolve uma resposta.

O acesso a dados é feito através de classes conhecidas como Repository. Elas são específicas para acessar o banco de dados, API, arquivo ou qualquer lugar onde suas entidades estejam guardadas.

No seu exemplo, você teria:

  • A entidade Usuario com as regras de negócio referente a um usuário: Saber realizar o cálculo da sua idade, garantir que esteja sempre válido, dizer se está ativo ou não, etc.
  • Um repositório RepositorioUsuario que possuiria métodos como todos, ativos, aniversariantesDoMes, salvar, remover, etc.

Espero que eu tenha conseguido explicar de forma simples e clara. Quando o novo curso de PDO for ao ar você vai ver isso tudo com mais detalhes. :-D

Vou aproveitar o gancho da sua pergunta e dar uma dica sobre getters e setters:

https://blog.caelum.com.br/nao-aprender-oo-getters-e-setters/

Eita!

Eu tinha percebido algo de diferente no curso de PDO, mas nem tanto :D

Mas blz. Deu pra entender sim. Obrigado pelo retorno. Vou aguardar o novo treinamento. Espero que seja você instrutor. Gostei muito dos seus treinamentos de PHP e Doctrine. Na verdade consegui entender POO na prática mesmo só depois dos seus treinamentos.

Abs!

Fico feliz que você tem curtido, Flávio.

Eu também só fui aprender POO estudando aqui na Alura quando eu era só aluno (digo "só" porque apesar de ser instrutor hoje, continuo sendo aluno :-D).

Muito legal saber que to conseguindo passar esse conteúdo em PHP também, visto que na época não tinha aqui. :-D