Esse artigo visa dar uma explicação mais clara do padrão de projetos MVC, onde se separa completamente em 3 partes independentes o controller (lógica da aplicação), o view (visual) e o model (acesso ao banco). Antes vamos ver alguns pontos fortes e fracos desse padrão para desenvolvimento web.
Pontos Positivos
- Permite que designers e programadores trabalhem juntos sem um ficar dependendo do outro
- O programador não fica obrigado a usar apenas um tipo de banco de dados, pode facilmente alterar de mysql para oracle por exemplo sem mecher no programa, alterando apenas alguns parametros de configuração de banco de dados.
- O reaproveitamento de código é amplamente utilizado
- A modularização de software é bastante explorada
Pontos Negativos
- Exige um certo tempo de estudo e prática no início do aprendizado
- Erros são comuns nos primeiros projetos
- Documentação e ajuda em sua maior parte está em inglês
Uma introdução aos diretórios
Na imagem ao lado podemos distinguir alguns diretórios que são de bastante importância para nós:
Diretório “application”:
Este diretório irá conter toda a sua aplicação e seus códigos personalizados. Se você precisa alterar alguma coisa em alguma classe do core do codeigniter deverá sobrescrever dentro do diretório application. Por exemplo, se deseja fazer com que a classe de paginação (que se encontra dentro de system/libraries/Pagination.php) escreva links com uma classe em particular, deverá sobrescrever essa classe dentro do diretório application/libraries. Mais a frente explicarei como criar e alterar bibliotecas no ci.
Diretório “cache”:
Este diretório pode aliviar um pouco seu servidor caso sua aplicação tenha muitos acessos. Não é necessário configurar nada ali dentro, mas esse diretório precisa ter permissão de escrita ativada para o cache funcionar sem erro. O diretório application Aqui dentro temos todos os arquivos necessários para sua aplicação rodar em qualquer núcleo (core) do codeigniter. Segue abaixo uma introdução aos diretórios mais importantes:
O diretório “config”:
Nesse diretório encontramos arquivos de configurações como constantes personalizadas, configurações de banco de dados e do próprio funcionamento do codeigniter.
O diretório “controllers”:
Aqui é onde encontraremos os controllers da nossa aplicação, mais abaixo teremos uma explicação do que são, pra que servem e como utilizá-los
O diretório “models”:
Nesse diretório iremos salvar classes que irão representar as nossas entidades no banco de dados, são os famosos models, responsáveis pelo acesso ao banco.
O diretório “libraries”:
Nessa pasta podemos criar nossas classes personalizadas para auxiliar em tarefas comuns, é o principal meio de reaproveitamento de código no codeigniter. Por exemplo, podemos ter uma classe responsável por autenticação de usuários. Como todos os projetos que faremos irá utilizar autenticação, podemos criar uma classe responsável por isso e reaproveitá-la economizando alguns minutos no desenvolvimento.
O diretório “language”:
Quando utilizamos as classes nativas do codeigniter, as mensagens de erro são sempre em inglês. Podemos utilizar este diretório para salvar arquivos-linguagens, que permitem tanto modificar a mensagem que a classe nativa irá exibir, como também auxiliar em projetos multi-linguagem.
O diretório “views”:
Toda a parte visual da aplicação virá aqui. Existem programadores que gostam de colocar as imagens, css e javascripts aqui dentro e outros que preferem deixar apenas o html visual, com os css, imagens e javascripts fora do diretório system, do codeigniter. Sinceramente, isso não irá fazer muita diferença na sua aplicação.
Fluxo de dados:
Antes de começarmos a programar, vamos entender primeiro o fluxo de dados do codeigniter: Como podemos ver acima, em primeiro lugar o usuário faz a requisição da página. Essa requisição chama o controller da aplicação responsável por exibir aquela página. Esse controller chama as libraries, models e helpers que precisa para processar as informações que serão exibidas na tela, e finalmente invoca a view responsável por exibir o visual que o usuário irá visualizar. Criando um projeto inicial Vamos criar um controller para nossa aplicação chamado “Contato”. Salve um arquivo chamado “contato.php” no diretório application/controllers com o seguinte código:
<?php class Contato extends Controller{
function index(){ $this->formulario(); }
function formulario(){ $dados['titulo'] = “Formulário de Contato”; $dados['ip'] = $this->input->ip_address(); //método da classe nativa “input” responsável por retornar o IP do usuário $this->load->view(“form-contato”, $dados); } } ?>
Agora vamos criar a view responsável por exibir na tela o formuário de contato desse controller. Crie um arquivo chamado “form-contato.php” dentro do diretório application/views com o seguinte código:
<h1><?=$titulo;?></h1>
<form action=”index.php/contato/enviar” method=”post”> Seu nome: <input type=”text” name=”nome” /><br /> Seu email: <input type=”text” name=”email” /><br /> Sua mensagem: <textarea rows=”5? cols=”25? name=”mensagem”></textarea>
Seu endereço de IP é: <?=$ip;?>
<input type=”submit” value=”Enviar” />
Explicando:
- O código <?=$titulo;?> é o mesmo que dizer <?php echo $titulo; ?>. Onde foi definida essa variável título? No controller que chamou essa view. Lá, a variável titulo, assim como a variável ip, são índices de um vetor, que foi passado como segundo parâmetro do método view() da classe load ($this->load->view(NOME-DA-VIEW, ARRAY-COM-VARIAVEIS)).
- Podemos perceber que na action do formulário ele aponta para: index.php/contato/enviar. Significa que ao submeter esse formulário, ele irá acessar uma URL do codeigniter que irá chamar o controller Contato, e executar o método enviar(), passando os campos como POST.
Para acessar nosso formulário basta você entrar na URL: seusite.com/index.php/contato ou então: seusite.com/index.php/contato/formulario. Dessa forma seguimos o padrão de URL que o codeigniter usa: index.php/nome-do-controller/nome-do-metodo/parametro-1/parametro-1/…/parametro-n Se você acessar apenas: index.php/nome-do-controller/ o codeigniter irá converter isso automaticamente para: index.php/nome-do-controller/index, ou seja, se nenhum método for passado pela url, o método padrão a ser acessado será o método index(), caso ele não tenha sido declarado, ocorrerá um erro. Espero que tenham gostado galerinha, o tuto foi bem simples, mas acho que dá pra ter uma idéia do que é o codeigniter e como trabalhar com ele. Estou pensando em dar um curso de php orientado a objetos ou de codeigniter. Vou lançar uma enquete. Votem e o resultado irá decidir. Fiquem ligados no blog e assinem a newsletter para ficarem em dia com as novidades.
Fonte: Blog Estilo Fácil
4 Comentários
Pra quem está iniciando é muito bom esse tipo de tutorial…
Só 2s questões.
1 – Na frase “sem mecher no programa” a palavra mecher está errada. O correto é mexer.
2 – “O código é o mesmo que dizer “.
Seria interessante deixar claro que não é recomendável utilizar Short Tags, inclusive o
PHP apartir da versão 5.3.1 vêm com padrão “short_open_tag” desabilitado!
Finalizando…
Parabéns pelo Post!
=D
Opa, valeu aew pelas observações Cledir. Quanto ao uso de short-tags.. é um vício que preciso corrigir. ^^
Cara, você me deu um empurrão que faltava para começar a usa-lo.
Obrigado mesmo, vou voltar minha atenção a esse framework agora
Abraço
Muito bom o tutorial. Só não entendi uma coisa: pra onde esse formulário vai ser enviado?