Anda di halaman 1dari 8

Com o intuito de aprimorar o processo de escolha de uma estrutura de diretrios para o desenvolvimento de um framework, foi realizada a pesquisa sobre

as estruturas utilizadas por alguns dos frameworks mais populares. A seguir, sero mostradas as estruturas de cinco desses frameworks: Akelos; Yii; CodeIgniter; Zend; Kohana.

Em geral, as estruturas de diretrios padro desses frameworks voltada para o desenvolvimento de uma aplicao MVC simples. Alguns deles, como o Zend, aceitam a alterao dessa estrutura, atravs da modificao de sua classe controladora, para um modelo que envolva uma aplicao central que tenha diferentes aplicaes menores em seu interior (que sero chamados, a partir de agora, de mdulos). J o Kohana, um fork do CodeIgniter, um framework desenvolvido com essa caracterstica. Por isso, esses dois frameworks tero relatos mais detalhados.

Akelos Estrutura de diretrios: <projeto>/ /app /controller /helpers /models /views /layout /config /lib /log /public /script /test /tmp /vendor Como fica visvel, sua estrutura padro voltada para aplicaes simples. Link: http://www.akelos.org/wiki/directory-structure ( preciso cadastrar-se para ter acesso)

CodeIgniter Estrutura de diretrios:

, tambm, uma estrutura voltada para sistemas MVC com uma nica aplicao. No existe uma separao clara entre os controladores de diferentes aspectos do sistema, muito menos para acrscimos de mdulos. Link: http://codeigniterbrasil.com/passos-iniciais/estrutura-de-diretorios-organizacaode-pastas-do-codeigniter-2/

Yii Estrutura de diretrios:


<projeto>/ backend/ common/ components/ config/ params.php params-local.php * lib/ Pear/ yii/ Zend/ migrations/ models/ Comment.php Extension.php ... console/ commands/ SitemapCommand.php ... config/ main.php main-local.php * params.php params-local.php * runtime/ yiic.php * frontend/ components/ config/ main.php main-local.php * params.php params-local.php * controllers/ SiteController.php ... lib/ models/ ContactForm.php SearchForm.php runtime/ views/ layouts/ site/ www/ assets/ css/ js/ index.php * yiic yiic.bat

Essa a estrutura usada pelo prprio site do framework (yiiframework.com) e recomendada para projetos de mdio e grande portes.

Como percebe-se, existe uma diviso da estrutura do sistema em 4 diretrios top-level: backend: armazena a aplicao voltada aos administradores do site. common: armazena um contedo compartilhado pelas aplicaes do site. console: formada por arquivos de comando necessrios pelo sistema. frontend: diretrio que armazena a aplicao voltada ao usurio final.

Link: http://www.yiiframework.com/wiki/155/the-directory-structure-of-the-yiiproject-site/

Zend

Estrutura de diretrios:

1. <project name>/ 2. application/ 3. configs/ 4. application.ini 5. controllers/ 6. helpers/ 7. forms/ 8. layouts/ 9. filters/ 10. helpers/ 11. scripts/ 12. models/ 13. modules/ 14. services/ 15. views/ 16. filters/ 17. helpers/ 18. scripts/ 19. Bootstrap.php 20. data/ 21. cache/ 22. indexes/ 23. locales/ 24. logs/ 25. sessions/ 26. uploads/ 27. docs/ 28. library/ 29. public/ 30. css/ 31. images/ 32. js/ 33. .htaccess 34. index.php 35. scripts/ 36. jobs/ 37. build/ 38. temp/ 39. tests/
Essa a estrutura recomendada para um projeto usando o framework. Existe um espao para mdulos, mas, nessa arquitetura, eles no estariam dispostos da melhor maneira.

Para contornar esse problema, a prpria documentao oferece um projeto de estrutura de diretrios para sistemas com mdulos que controlam diferentes aspectos ou lhe adicionem funes. Estrutura de diretrios de um sistema modular convencional:

1. docroot/ 2. index.php 3. application/ 4. default/ 5. controllers/ 6. IndexController.php 7. FooController.php 8. models/ 9. views/ 10. scripts/ 11. index/ 12. foo/ 13. helpers/ 14. filters/ 15. blog/ 16. controllers/ 17. IndexController.php 18. models/ 19. views/ 20. scripts/ 21. index/ 22. helpers/ 23. filters/ 24. news/ 25. controllers/ 26. IndexController.php 27. ListController.php 28. models/ 29. views/ 30. scripts/ 31. index/ 32. list/ 33. helpers/ 34. filters/ Nessa estrutura, existe um diretrio com aspectos padro para todos os mdulos do sistema e cada mdulo (nesse caso, blog e news) tem seu prprio diretrio, que contm seus controllers, models e views, o que deixa bem claro a independncia entre cada mdulo presente no sistema. Padronizando, tambm, a estrutura de diretrios de cada mdulo, fcil acrescentar mdulos ao sistema apenas adicionando seu nome no sistema para ser reconhecido.

Kohana Estrutura de diretrios:


root +- application | +- cache | +- config | +- controllers | +- helpers | +- hooks | +- libraries | +- logs | +- models | +- views | +- modules | +- media | +- config | +- controllers | +- helpers | +- libraries | +- ..... +- system | +- config | +- controllers | +- core | +- helpers | +- i18n | +- libraries | +- models | +- vendor | +- views | +- index.php

O sistema organizado em 3 diretrios top-level. Como no existe uma definio das caractersticas de cada diretrio na documentao, fao uma sugesto: system: nesse diretrio, ficaria toda a base do framework e o sistema de gerenciamento de aplicaes desenvolvidas. application: armazenaria todos os aspectos do sistema principal desenvolvido (a Intranet e sua pgina principal, por exemplo). modules: nesse diretrio, todos os mdulo da aplicao armazenada em application. Caso seja desenvolvida mais de uma aplicao, em cada diretrio application existiria um diretrio modules para armazenar seus mdulos.