Modelos em CodeIgniter

Vejamos o que são os modelos em CodeIgniter, que se podem utilizar de maneira opcional para encapsular os acessos à base de dados.

Por Miguel Angel Alvarez - Tradução de Celeste Veiga


Publicado em: 28/9/11
Valorize este artigo:
Neste artigo, que faz parte do Manual de CodeIgniter, vamos começar com os modelos em CodeIgniter, o terceiro e último dos integrantes do padrão de desenvolvimento utilizado neste framework PHP.

Em artigos anteriores já vimos de maneira geral o que eram os modelos, quando explicamos o Modelo - Visão - Controlador (MVC), assim que agora vamos ver como CodeIgniter os gerencia. Não obstante, vale dizer que os modelos no MVC são os módulos que têm como responsabilidade o acesso e o controle dos dados que há em bases de dados e mantêm encapsuladas todas as particularidades e complexidades dos acessos às tabelas para realizar qualquer tipo de operação.

Ao se centralizarem todas as ações sobre a base de dados por meio dos modelos, nos controladores podemos esquecer do complexa ou simples que é nossa base de dados, inclusive de que tipo de base de dados tem o servidor com que estamos trabalhando.

No padrão MVC, os modelos são uma das partes fundamentais porém, no caso de CodeIgniter, seu uso é só opcional. O desenvolvedor é o responsável por decidir se é vantajoso o uso dos modelos ou se prefere realizar suas aplicações fazendo qualquer tipo de operação sobre a base de dados nos próprios controladores.

Nota: A possibilidade de usar ou não modelos depende de nós. Esta liberdade quanto à escolha de nossos próprios costumes de codificação é muito próprio de CodeIgniter, que se vende a ele mesmo como um framework flexível, que pode ser adaptado à maioria dos entornos. Nós, no entanto, queremos recomendar sua utilização, pelo menos para testar as vantagens de uso e ver se no futuro nos interessa ou não nos basearmos neles para realizar os acessos à base de dados. Sem dúvida, se queremos programar "em alto estilo", devemos utilizá-los. Na verdade, oferecem muitas vantagens para projetos grandes, como a abstração de base de dados.

Como é um modelo em CodeIgniter

Os modelos na prática são classes, de programação orientada a objetos, que têm seus métodos ou funções, aos que se pode invocar a partir dos controladores para fazer operações com a base de dados.

Os modelos, como dizíamos, conterão uma série de funções ou métodos para realizar as operações típicas. Por exemplo, pensemos em uma aplicação que tem que trabalhar com usuários. Então teremos um modelo de usuários que terá uma série de funções, como a seleção de usuários, inserção, atualização. Nossa aplicação geralmente terá vários modelos, para trabalhar com cada uma das entidades de nossa base de dados.

Aqui podemos ver um exemplo de modelo em CodeIgniter, embora incompleto, que pode nos dar alguma ideia. Pode valer a pena dar uma olhada, mesmo que não o entendamos totalmente. Não há que se preocupar, pois em breve explicaremos cada uma de suas partes em detalhes.

class Usuario_model extends Model {

   function __construct(){
      parent::Model();
   }
   
   function existe_email($email){
      $this->db->select('email_usuario');
      $this->db->where('email_usuario', $email);
      $query = $this->db->get('usuario');
      if ($query->num_rows() > 0){
         return 1;
      }
      return 0;
   }
   
   function usuario_login($email){
      $this->db->where('email_usuario', $email);
      //$this->db->where('chave', md5($chave));
      $query = $this->db->get('usuario');
      if ($query->num_rows() > 0){
         return $query->row();
      }
      return 0;
   }
   
   function insere_usuario($dados = array()){
      if(!$this->_required(array("email_usuario","clave"), $dados)){
         return FALSE;
      }
      //chave, encripto
      $dados['clave']=md5($dados['clave']);
   
      $this->db->insert('usuario', $dados);
      return $this->db->insert_id();
   }
}

Bases da construção de modelos em CodeIgniter

Os modelos são construídos estendendo a classe Model e temos que nomeá-los com a primeira letra em maiúsculas. Dentro do modelo que estamos criando temos que definir obrigatoriamente um constructor, onde temos que fazer uma chamada ao constructor da classe da que herda (classe parent, chamada Model).

Este seria o modelo mais básico, que está vazio, já que não tem nenhuma função para operar com a base de dados. Mostramos primeiro o código básico de um modelo em PHP 5, onde os construtores têm o nome __construct().

class Nome_model extends Model {
   function __construct(){
      parent::Model();
   }
}

Agora vejamos como seria o modelo básico em PHP 4, onde os modelos teriam uma pequena diferença, dado que os construtores na versão 4 de PHP têm sempre o mesmo nome da própria classe.

class Nome_model extends Model {
   function Nome_model(){
      parent::Model();
   }
}

Os modelos devem ser salvos na pasta "system/application/models/". O nome de arquivo do código do modelo deve ter extensão .php e tem de ser de escrito com todas as letras em minúsculas. Por exemplo, nosso modelo, cuja classe se chama "Nome_model", deveríamos salvá-lo na rota:

system/application/models/nome_model.php

Se desejarmos, podemos organizar nossos modelos por subdiretórios, sempre dentro da pasta "system/application/models/". Quando os carreguemos só teremos que indicar em que pasta estão localizados.

No artigo seguinte ampliaremos esta informação e mostraremos como utilizar os modelos em uma aplicação web, carregando-os a partir dos controladores e invocando seus métodos para o acesso às tabelas. Mais tarde, veremos como configurar CodeIgniter para dizer-lhe qual é o nosso servidor de base de dados, o nome da base de dados a ser utilizada e outros dados de acesso, para que o próprio Framework possa fazer conexões a partir dos modelos.





Comentários do artigo
Foram enviados 2 comentários ao artigo
2 comentários não revisados
0 comentários revisados

Usuários :    login / registro

Manuais relacionados
Categorias relacionadas
O autor

Home | Sobre nós | Copyright | Anuncie | Entrar em contato