Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Comecei a aprender PHP por conta própria e estudei diversos materiais. Com o tempo comecei a usar a programação orientada a objetos, ou pelo menos achei que estava usando. De uns tempos para cá, comecei a ficar em dúvida se estaria fazendo da forma correta. Então busquei outros materiais, revi os antigos e veio uma dúvida que não consegui resposta e gostaria de saber se podem me ajudar.
Quando pego uma série de registros de um banco de dados, devo coloca-los num único objeto, ou criar um objeto para cada registro?
Para clarear minha pergunta segue mais detalhes de como faço até hoje.
Eu utilizo o CodeIgniter e então criei um model chamado CRUD onde obtenho os valores desejados de qualquer tabela do banco de dados, por exemplo, usando a função abaixo:
public function SelecionaTodos ($tabela) {
return $this->db->get($tabela);
}
Até este ponto está tudo num único objeto. Mas vamos dizer que vou trabalhar com os dados da tabela "aluno". Então queria pegar os dados que essa função retorna e jogar na classe Aluno para fazer as rotinas do sistema. Aí que vem a dúvida se devo jogar os valores todos como um array, ou crio um objeto para cada registro retornado, enfim, gostaria de ouvir a opinião dos especialistas ou mais experientes.Marcelo, se você esta se referindo a retornar um \PDO::FETCH_ASSOC ou \PDO::FETCH_OBJ ou algo correlato, ao meu ver, já que estamos trabalhando com orientação a objetos, faz mais sentido ter uma coleção de objetos do que de arrays, a não ser que você tenha um bom motivo para retornar um array.
Obrigado pelas dicas. Os dois esclareceram bastante.
É melhor ter vários módulos, cada um com sua devida responsabilidade, do que um módulo com várias responsabilidades!
Hoje você retorna um array, amanhã precisa retornar um json, vai ficar alterando o CRUD?
É meio obvio que corre o risco de quebrar a aplicação.
Você pode resolver isso criando uma classe que faz o intermediação entre o Controller e a Model, que é o Repositorio. Já que CI usa a arquitetura MVC.
>
Em 03/04/2017 at 07:45, marcelobbt disse:
Eu utilizo o CodeIgniter e então criei um model chamado CRUD onde obtenho os valores desejados de qualquer tabela do banco de dados, por exemplo, usando a função abaixo:
Ruim do Ci é isso, ninguém segue um padrão. O que mais vemos é aplicação + pra - do que - pra + com o Ci.
Só não faça isso em um repositório.
<?php
class UsuarioRepositorio
{
class UserRepository
{