sábado, 28 de agosto de 2010

Exemplo de implementação usando Zend framework

Como aplicar os modulos na construção MVC usando ZF era uma pergunta que estava me faltando responder pra mim mesmo a algum tempo. Faltava clareza na minha interpretação. E conversando com o Maicon eu percebi que não era só eu que tinha dificuldade em entender o papel e aplicação do modulo.

Então fui atrás de uma resposta mais completa que o reference guide do framework. Encontrei o site do Ben Scholzen (Dasprid) que disponibilizou o proprio site como open source nesse SVN aqui (http://site.svn.dasprids.de/). E explorando o fonte do site do Ben eu devo ter encontrado mais novas perguntas que respostas. Esse não um bom lugar pra começar a usar zf, esse projeto é muita coisa pra digerir de uma vez. Mas a resposta que eu procurar eu encontrei, então guarde esse link:

A primeira impressão sobre modulos que eu tive, que o Maicon inclusive compartilhou comigo, é que deveríamos segmentar a frontend do backend usando modulo (site e admin). Mas o que o fonte do Ben mostra são modulos por componentes. Assim o componente blog é um modulo composto por 2 controllers, um index e um admin. Poderia ser noticias, a busca, o contato ou o catalogo de produtos que costumamos ver dentro de sites comerciais frequentemente.

Logo me dei conta que isso era praticamente obvio, como eu não tinha notado antes? Mais uma vez os patterns mostram pra que existem =D. A maneira mais fácil de enxergar um modulo era pelas entidades (tabelas) que ele faria uso. Como em um blog as entidades post e comentário só fazem sentido dentro do blog. Então elas podem ser encapsuladas dentro do modulo, junto com todas as interfaces que são pertinentes, administração/backend e exibição no frontend . Dessa mesma forma, um site sem blog que contem a sua própria admin faz muito mais sentido que um site sem uma admin nenhuma. A palavra modular faz muito sentido agora não?


A primeira duvida foi: Como ele define que a index vai ser a index do modulo blog se o modulo default não tem nenhum redirect e nas configs de rota não tem nada especifico apontando o blog? Talvez me falte conhecimento sobre as rotas. Talvez eu faça um post sobre isso logo =D