Modelo - Visão - Controlador em CodeIgniter

Explicamos a arquitetura de desenvolvimento chamada Modelo - Visão - Controlador, que utiliza CodeIgniter e outros frameworks PHP.

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


Publicado em: 16/5/11
Valorize este artigo:
Seguimos oferecendo capítulos introdutórios no Manual de CodeIgniter de CriarWeb.com. Agora, vamos explicar o estilo de programação que temos que seguir quando desenvolvemos nossas aplicações web em CodeIgniter.

O Modelo, Visão, Controlador é típicamente utilizado para a criação de aplicações web e não só CodeIgniter o implementa, como também outra série de frameworks de desenvolvimento web, em PHP ou outras linguagens. É interessante porque separa em vários grupos as complexidades das diferentes partes que compõem uma página web, como a vista e a lógica, assim como o acesso à base de dados.

Talvez o que mais nos force a mudar nossos hábitos de programação em PHP seja o fato de termos que basear nossos scripts neste modelo de programação, que seguramente resultará uma novidade para a maioria dos leitores deste manual, porque fixa um novo estilo de desenvolvimento de aplicações, que nos obriga a separar código fonte segundo seu âmbito. Entretanto, como dizíamos anteriormente, estes novos costumes de codificação também ajudarão nossos programas a serem melhores e a desfrutarem de várias vantagens como ser mais organizados, extensíveis y entendíveis por outros desenvolvedores, reutilizáveis, de mais fácil manutenção, etc.

Para aqueles que não o conhecem, o Modelo - Visão - Controlador (em inglês Model - View - Controller) é um padrão de desenvolvimento ou um estilo de arquitetura de software que separa o código fonte das aplicações em três grupos:

Modelo:
Todo o código que tem que ver com o acesso à base de dados. No modelo manteremos encapsulada a complexidade de nossa base de dados e apenas criaremos funções para receber, inserir, atualizar ou apagar informação de nossas tabelas. Ao se manterem todas as chamadas à base de dados em um mesmo código, desde outras partes do programa poderemos invocar as funções que necessitemos do modelo e este se encarregará de processá-las. No modelo nos poderão preocupar coisas como o tipo de base de dados com a que trabalhamos, ou as tabelas e suas relações, mas desde as outras partes do programa simplesmente chamaremos as funções do modelo sem nos importar com o que ele tem que fazer para conseguir realizar as ações invocadas.

Visão:
A visão codifica e mantém a apresentação final de nossa aplicação com vista ao usuário. Ou seja, na visão colocaremos todo o código HTML, CSS, Javascript, etc. que se deve gerar para produzir a página como queremos que seja vista pelo usuário. Na prática, a visão não só serve para produzir páginas web, como também qualquer outra saída que queiramos enviar ao usuário, em formatos ou linguagens diferentes, como podem ser feeds RSS, arquivos JSON, XML, etc.

Controlador:
O controlador poderíamos dizer que é a parte mais importante, porque funciona como link entre o modelo, a visão e qualquer outro recurso que se tenha que processar no servidor para gerar a página web. Em resumo, no controlador salvamos a lógica de nossas páginas e realizamos todas as ações que sejam necessárias para gerá-las, ajudados pelo modelo ou pela visão.

Nota: Isto quer dizer, na prática para o caso de CodeIgniter, que segundo seja o âmbito onde estejamos codificando, teremos que escrever as linhas de código de qualquer página web em três grupos de arquivos distintos. Em uma aplicação standard poderemos ter vários modelos (por exemplo, para cada uma das entidades diferentes da base de dados), várias visões (uma ou várias para cada página ou seção) e vários controladores (para cada página ou seção da web). Mais tarde veremos onde temos que salvar os arquivos de cada um destes três grupos.
Durante o desenvolvimento com CodeIgniter será muito recomendável seguir as normas do design Modelo - Visão - Controlador (MVC), mas realmente o framework é bastante flexível e permite que, se desejarmos, não sigamos o desenvolvimento atendendo a tal arquitetura. Neste caso, poderíamos ter simplesmente controladores e dentro deles realizar todas as ações de acesso à base de dados diretamente, sem fazer chamadas ao modelo, ou escrever texto na saída sem utilizar as visões. Obviamente, esta opção não aproveitará as vantagens de separação de código entre apresentação, lógica e modelo de base de dados, porém se virmos que nos resulta muito complexo o MVC, podemos deixá-lo de lado.

No caso de que não utilizemos os modelos, não ocorrerá nenhum efeito negativo no desempenho do framework, porém, no caso das visões, se não as utilizamos e escrevemos saída diretamente desde o controlador, como por exemplo, com sentenças echo de PHP no código dos controladores, perderemos algumas das vantagens que CodeIgniter realiza por nós para processar a saída antes de enviá-la ao usuário. Isto será detalhado mais adiante.

Nota: Como sabemos, ou podemos imaginar, separar a visão ou apresentação da lógica dos programas é uma vantagem importante, já que ajuda a manter um código mais simples, reduzido e com maior facilidade de manutenção. No principio, pode parecer um tanto complexo o fato de manejar vários arquivos com códigos diferentes, mas a médio prazo nos beneficiará separar o código de cada parte de nossa aplicação. Evitará muitos dos problemas que, às vezes, temos em desenvolvimentos PHP, onde em um mesmo arquivo temos misturado código em várias linguagens como HTML, CSS, SQL, com o próprio código PHP para gerar a lógica de nosso negócio.






Usuários :    login / registro

Manuais relacionados
Categorias relacionadas
O autor

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