RSS
 

Como estruturar uma aplicação completa usando Zend Framework

22 dez

Hoje vou mostrar como estruturar uma aplicação usando Zend Framework 1.9.6 de forma com que ela tenha três(3) módulos, são eles:

  • admin (Administração)
  • default (Site/Homepage)
  • app (app)

Visualmente nossa aplicação ficará com a seguinte estrutura:

Como exemplo, foi criado o projeto sample_project onde defimos a estrutura da aplicação.

Dentro do projeto, temos a pasta application, que é onde fica toda a aplicação, regras de negócio, controlers, views, classes de abstração de dados e etc. Dentro dela não se aplica imagens nem arquivos de css e javascript, pois todos devem estar dentro de assets/css … /javascript.

Dentro da aplicação temos a pasta configs onde nela existe o application.ini, que é onde fica todas as configurações inicias da nossa aplicação, onde definimos a URL base, caminhos dos módulos, controllers, views e etc.

A pasta models (modelos) é onde fica nossas classes de abstração de dados, ou seja, onde manipulamos os dados do banco, insert, update, select e delete, onde definimos também os relacionamentos entre as tabelas do banco dados. É aconselhável também a criação de um model para cada tabela criada no banco de dados e que haja necessidade de manipulação dinâmica.

Chegamos agora na pasta modules (módulos), que por sua vez contém os módulos que iremos utilizar na nossa aplicação. Ela separa os módulos admin, app e default de forma com que cada um seja responsável por seus controllers, layout e views.

Os controllers são os responsáveis por separar toda a lógica da parte visual da aplicação, são a cabeça da estrutura MVC, busca os dados no model, o trata e o devolve para uma view onde são exibidos os dados.

A pasta layouts contém o arquivo .phtml de exibição do layout, nele deve conter toda a estrutura (html) do layout do módulo em que se está. Obs: o nome deste arquivo deve sempre ser o nome do módulo a que ele pertence.

As views são as responsáveis por exibir os dados passados pelos controllers, formatados e da forma que se deseja.

A pasta views/helpers contém arquivos que poderão ser reutilizados por todas as views.

Na pasta scripts contém uma pasta para cada controller e um arquivo .phtml para cada action desse controller. Todo controller deve conter uma view, senão acarretará erro na aplicação.

o arquivo Bootstrap.php é o coração da nossa aplicação, onde startamos funções essencias na nossa aplicação como autoloader, plugins e conexão com banco de dados.

A pasta library é a nossa biblioteca de arquivos do Zend, e também onde podemos criar nossas próprias bibliotecas, como é o caso da pasta Sample.

www, esta é a nossa pasta pública na web, ou seja, que ficará visivel para o usuário. É dentro dela que inserimos nossos arquivos de css, javascript e imagens, como no exemplo situados dentro da pasta assets. Também temos dentro dela a pasta de upload onde será o caminho do arquivos “upados” para nossa aplicação.

No arquivo .htaccess configuramos alguns diretórios e redirecionamentos para o servidor apache, no momento não é necessário modifica-lo, pois ele já vem pré configurado ao criar a aplicação usando o Zend_Tools.

E finalmente chegamos ao nosso index.php, que nada mais nada menos é o responsável por juntar tudo sitado anteriormente e exibir para gente na telinha. É nele que se “starta” toda a aplicação usando o método $application->bootstrap()->run();

Com minha experiência en desenvolvimento web e zend, acredito que essa seja a melhor forma para pensar, começar e estruturar uma aplicação web de respeito e muita segurança.

Baixe a estrutura e comece agora mesmo a desenvolver sua app.

Sample Project (10,7 KiB, 1.270 downloads )

Abs

Artigos relacionados:

  1. Como configurar uma aplicação completa usando Zend Framework
  2. Como fazer upload de imagens usando Zend Framework
  3. Como criar conexão com banco de dados MySQL usando Zend Framework
  4. Como verificar se o usuário está logado – Zend Framework
  5. Como criar um projeto usando a Zend_Tool do Zend Framework
 

Leave a Reply

 
 
  1. Configurando uma aplicação completa usando Zend Framework « Daniel Developer

    29/12/2009 at 12:40

    [...] Sobre « Estruturando uma aplicação completa usando Zend Framework [...]

     
  2. Hugo

    28/01/2010 at 04:47

    Amigo não consigo fazer funcionar o Plugin Layout. Alguma dica?

     
  3. Daniel Developer

    28/01/2010 at 08:26

    Ok Hugo, qual dificuldade você está tendo? A aplicação reporta algum erro?

     
  4. Ederson

    29/01/2010 at 03:35

    Olá Daniel, estou inicialzando meu estudo em zend e gostaria de uma dica sua.

    Este livro é recomendavel?
    Desenvolvendo em PHP 5 Orientado a Objetos com MVC.

    e

    Zend Framework: Componentes Poderosos para PHP.

    Ambos o Autor: Flávio Gomes da Silva Lisboa

     
  5. Ederson

    29/01/2010 at 03:40

    Daniel estou iniciando meu estudo em zend, e gostaria de uma ajuda sua em relação a qual livro comprar, estou interessado nestes dois:

    Desenvolvendo em PHP 5 Orientado a Objetos com MVC e Zend Framework: Componentes Poderosos para PHP, ambos do Flavio Gomes.

    Eles são compatives com a versão atual do framework, pois o primeiro livro citado é de 2008?.
    Grato.

     
  6. Daniel Developer

    29/01/2010 at 04:03

    Bem vindo Ederson! :D
    Eu te indico o segundo livro que é mais atual “Zend Framework: Componentes Poderosos para PHP”! Ele vai te esclarecer muitas dúvidas e concerteza vai ser muito útil no início do seu estudo!
    Recomendo também que sempre procure na documentação do Zend, pois foi lá ensina muita coisa!
    Abs!

     
  7. Ederson

    30/01/2010 at 06:14

    Daniel, comecei a pesquisar e percebi algo que fiquei encucado….

    as configuracoes do projeto fica em um arquivo .INI, geralmente application/configs… nela vc seta configuracoes como os dados do Banco de Dados…duvida! isso é facilmente acessivel para uma pessoa com conhecimento e fazer download deste arquivo… como http://site/projeto/application/configs/application.ini…. há uma solução para isso?

    abs.

     
  8. Ederson

    30/01/2010 at 14:02

    Bom ate agora achei isso.

    trabalhar com arquivos php, definindo alguns dados importantes com $GLOBALS[]

    e depois usar require_once em um algum init.

    Se tiver algum outra solucao poste ai vlw.;

     
  9. Daniel Developer

    01/02/2010 at 02:50

    Ederson, com o Zend Framework isso não é possível! Verifique que a pasta “applications” está no mesmo nível da pasta “public” ou “www”, sendo assim, o usuário não conseguirá acessar esse arquivo através da url ou outro método. Este é uma grande amostra da segurança do Zend Framework, pois toda aplicação roda no mesmo nível do que fica acessível ao usuário! O usuário só terá acesso ao que estiver dentro da pasta “public” ou “www”.Abraços!

     
  10. Ederson

    01/02/2010 at 03:33

    OPA vlw, estudando um pouco mais depois, consegui observar isso…

     
  11. Ederson

    02/02/2010 at 11:08

    Daniel vc conhece algum CMS que possui a fonte de facil entendimento? abs

     
  12. Daniel Developer

    02/02/2010 at 14:31

    Ederson,

    eu trabalho muito com wordpress, apesar de não ser considerado um CMS, mas isso está mudando pois eu e também muitos outros desenvolvedores conseguimos fazer o que queremos com ele. Eu o utilizo como meu CMS. Ele sempre me atendeu nos meus trabalhos e é muito competente, com uma comunidade muito grande!

    Abraços

     
  13. Cleiton

    18/02/2010 at 03:24

    Cadê a pasta public?

     
  14. Daniel Developer

    18/02/2010 at 03:30

    Cleiton, no Sample Project eu renomeei a pasta public para www. Considere a www. Abraços

     
  15. Diogo

    08/04/2010 at 07:13

    existe uma forma de deixar a pasta layout fora do module ?
    vou tentar ilustrar a cituação.

    Tenho um site que composto de pequenos sites, ao todo são 10, quero criar para cada sub site um modulo, o layout geral é o mesmo, css e js, o que muda é como os dados são visualizados, assim, eu poderia criar uma pasta só de layout para todos os sites, e implementar a parte específica de cada site no modulo.

    também, para cada modulo vou criar um dominio diferente, ou seja, com modulo fica mais facil fazer isso.

     
  16. Daniel Developer

    08/04/2010 at 14:57

    Diogo,

    existe uma forma sim, pra tudo tem jeito. Apenas devemos estudar uma forma mais fácil de se fazer isso. Monte sua estrutura de pastas e arquivos para que possamos estudar juntos uma forma.

    Abraços

     
  17. ANDERSON

    19/05/2010 at 12:24

    Oi Daniel, não conheço zend mas estou com vontade de aprender, sou bem iniciante em programação, vc sabe ne dizer como começar, preciso de coisas de inicio tipo de como cria o primeiro projeto e como vai aprofundando o conhecimento.
    Obrigado por responder.
    Att,
    Anderson

     
  18. Daniel Developer

    20/05/2010 at 07:17

    Anderson,

    antes de partir para o Zend Framework, é de extrema importância que se domine o PHP5 e orientação a objetos. Essa é a base para começar o desenvolvimento com o Zend Framework. Você pode começar por bons tutorias sobre orientação a objetos e php. Assim, o Zend Framework vai ficar fácil pra você!

    Abraços e bons estudos.

     
  19. Cleyber

    09/06/2010 at 10:28

    Boa tarde Daniel,
    Nessa sua estrutura ideal onde entraria a pasta Form ?? ficaria em cada módulo ou acompanharia a idéia dos modelos ?

     
  20. Flavio

    14/06/2010 at 19:09

    Parabéns pelo Post !!

    Estou iniciando meus estudos em Zend pois vou utiliza-lo na implementação do meu TCC !! E também quero utiliza-lo nos meus projetos do dia a dia.

     
  21. Flavio

    14/06/2010 at 19:55

    Configurei os Layouts assim:

    resources.layout.layoutPath = APPLICATION_PATH “/modules/default/layouts”

    resources.layout.layoutPath = APPLICATION_PATH “/modules/admin/layouts/”

    resources.layout.layoutPath = APPLICATION_PATH “/modules/app/layouts”

    Está correto ? **Funcionou, só não sei se é a forma correta

     
  22. Daniel Developer

    16/06/2010 at 12:12

    Cleyber,

    a pasta form ficaria dentro da pasta library. Este artigo http://www.danieldeveloper.com/2010/01/25/formulario-com-zend_form/ lhe ajudará!

     
  23. Daniel Developer

    16/06/2010 at 12:14

    Flavio,

    me parece que sim! Bons estudos!

     
  24. Darren

    30/06/2010 at 10:21

    Thanks Daniel this helped me out a lot.

     
  25. Darren

    30/06/2010 at 15:19

    Hi I am having a problem, what is the naming convention for models when using this?

     
  26. Beto

    04/07/2010 at 16:50

    Olá Daniel. Primeiramente parabéns pelas materias.
    Estou com problemas nos models.
    Para usar esta estrutura devo configurar alguma coisa?

     
  27. Daniel Developer

    13/07/2010 at 05:17

     
  28. Daniel Developer

    13/07/2010 at 05:18

    Beto,

    use meu artigo sobre a configuração desta estrutura. http://www.danieldeveloper.com/2009/12/29/configurando-uma-aplicacao-completa-usando-zend-framework/

    Abraços.

     
  29. Gilberto

    09/08/2010 at 08:07

    Desculpa mas porque separar em modulos ?
    Nao estou a entender essa ideia de modulos embora me parece ideal.
    Obrigado.

     
  30. Daniel Developer

    13/08/2010 at 04:22

    Gilberto,

    usamos módulos quando em aplicações que tenham áreas diferentes para cada tipo de usuário, como por exemplo, um site e uma área administrativa desse site são dois módulos da aplicação, e se nesse mesmo site tivermos uma app, esta seria um terceiro módulo.

    Usamos módulos para separar lógicas que não são necessárias para todo o projeto.

    Para exemplificar melhor, temos uma aplicação muito bacana chamada Blidi, http://blidi.com, onde temos três módulos ( site, admin e aplicação ), tudo dentro de apenas uma instância do Zend Framework.

    Espero ter sido claro, e qualquer dúvida pode perguntar.

    Abraços