Para começar a desenvolver aplicações com Zend Framework, precisamos primeiro entender os conceitos básicos de seu funcionamento, dentre os componentes mais básicos, porem não menos importantes, encontramos o Zend Controller e Zend View, que iremos conhecer melhor durante este artigo. Caso você não conheça o paradigma MVC(Model-View-Controller), recomendo que leia o artigo Introdução ao Zend Framework, pois seu entendimento é fundamental.
Confira abaixo uma ilustração de como este paradigma trabalha no Zend Framework:
Confira as etapas da ilustração acima:
- Usuário faz uma requisição clicando em um link, enviando um formulário, etc.
- Controller recebe essa requisição.
- Controller solicita informações ao Model.
- Model retorna para o Controller os dados solicitados.
- Controller envia informações para View.
- View solicita dados ao Model.
- Model retorna para View os dados solicitados.
- A página é exibida para o usuário.
Neste artigo iremos abordar apenas os passos 1, 2, 5 e 8, que representam o fluxo básico, sem chamadas aos models.
Entendendo Zend Controller
O controller é responsável por processar e responder eventos, geralmente ações do usuário, podendo ou não interagir com os models. No zend framework o controller é representado por classes que extendem a classe Zend_Controller_Action.
No exemplo abaixo podemos observar um controller chamado IndexController e um método/action chamado indexAction(), quando executamos uma aplicação zend framework com suas configurações padrões este é o controller e action executado caso nenhum seja especificado na URL.
Quando solicitamos a url http://www.myapplication.com.br, na verdade o zend framework entende como: http://www.myapplication.com.br/index/index, pois sempre espera uma url no seguinte padrão:
Caso um desses não esteja presente, será substituido por index, além disso, para informar uma action precisamos informar um controller, mas podemos informar apenas o controller sem action, sendo está substituida por index.
Assim como informamos o controller e action, também podemos passar parâmetros pela URL.
Este padrão suporta vários parâmetros.
Para passar parâmetros seguindo este padrão, precisamos informar o controller e action.
Para finalizar este assunto, segue o padrão de urls no Zend Framework.
Este padrão pode ser customizado através de routers, mas este fica para outro artigo.
Confira alguns recursos oferecidos pelo Zend Controller
Entendendo Zend View
A view é responsável pela apresentação, interface que será exibida ao usuário no término do processamento de uma requisição. No zend framework esta camada é representada pela classe Zend_View, que trabalha como uma ponte entre o controller e o script de visão, está classe é instanciada pelo controller e pode receber ou não parâmetros, em seguida o controller solicita que seja renderizado um determinado script, essa solicitação pode ser realizada através do método render($script) ou pelos padrões de nomenclatura.
Por padrão os scripts são arquivos de extensão .phtml, misturando as linguagens PHP e HTML. É recomendado evitar a utilização em excesso da linguagem PHP, deixando o script de visão mais limpo, utilizando apenas como controlador de estruturas, principalmente com o recurso de sintaxe alternativa.
Padrões de controller e view
O zend framework se basea em padrões de nomenclaturas para determinar qual script de visão deve ser renderizado caso o método render($script) não seja invocado.
Estrutura básica de uma aplicação zend framework:
Confira alguns padrões de nomenclaturas:
- O arquivo do controller deve começar com letra maiúscula e terminar com Controller.php
- Toda action começa com letra minúscula e termina com Action()
- Scripts de visão ficam localizados na pasta scripts
- Para cada controller um diretório deve ser criado em scripts
- Para cada action um script de visão deve ser criado na pasta do controller
- Controller com nome composto deve utilizar CamelCase
- Action com nome composto deve utilizar lowerCamelCase
- Scripts de nomes compostos são minúsculos, separados por hífen(-)
- Na URL os nomes compostos são separados por hífen(-)
Layout e view helpers
Para organizar e deixar nossos scripts de visão sem códigos PHP em excesso, temos a possibilidade de trabalhar com layouts e view helpers, ambos tem como destaque a reutilização de código.
Layout
O componente Zend_Layout permite envolver o conteúdo da aplicação com uma determinada view, normalmente representando o modelo do site, mais conhecidos como layout, onde podemos definir o topo, menu, rodapé, etc.
View Helper
Nos scripts de visão, frequentemente precisamos executar funções complexas, como formatar uma data, exibir um link, etc. Um helper é simplesmente uma classe, que pode facilmente ser executada, deixando os scripts mais organizados com menos código php.
Confira alguns recursos oferecidos pelo Zend View
Trabalhando com controllers e views no zend framework
Agora que conhecemos um pouco sobre Zend Controller, Zend View e algumas de suas funcionalidades, vamos criar um exemplo simples. Baseado na estrutura apresentada no tópico Preparando o ambiente para desenvolvimento com Zend Framework, crie um projeto com nome de example-zend-view-controller.
Resultado
http://localhost/example-zend-view-controller/public/
http://localhost/example-zend-view-controller/public/index/index/username/Diogo+Matheus/
http://localhost/example-zend-view-controller/public/fale-conosco/
Confira o código-fonte do exemplo no GitHub.