Existem um milhão e uma estrutura de sistema de arquivos que entra na miríade de projetos de código aberto disponíveis. Coisas como módulos, arquivos de idiomas, domínios, bibliotecas de terceiros, migrações, internacionalização, backups e links sys para outras partes do sistema deram origem a muitas abordagens para organizar o sistema de arquivos de um projeto.
Como desenvolvedor PHP, gostaria de saber se algum tipo de padronização está começando a surgir entre os projetos. Com o PSR-0 , finalmente temos um padrão para nomear e carregar arquivos - mas não sei nada sobre o restante dos componentes que compõem o sistema ou como eles podem ser tratados de maneira sã.
Estamos lidando com muito mais do que apenas o MVC, então que exemplos existem de grandes projetos que lidam corretamente com todas essas coisas?
Respostas:
Não é realmente possível padronizar como os projetos devem ser apresentados, porque "depende".
Se você introduzir uma estrutura padrão, mas parte dela não for relevante para os requisitos que estão sendo desenvolvidos, poderá acabar com um ruído adicional desnecessário. Da mesma forma, se os padrões precisarem trabalhar para uma ampla gama de projetos, eles precisarão incorporar muitos cenários díspares.
Nosso trabalho como desenvolvedores é procurar padrões e práticas recomendadas e aplicá-los à tarefa em questão. Utilizamos nossa experiência e conhecimento para escolher a estrutura correta do sistema de arquivos para o projeto em que estamos trabalhando.
fonte
Não parece haver muito esforço de padronização e, para ser sincero, não vejo o benefício. Há apenas uma regra que você deve aderir, que nunca deve ter sob a raiz da documentação coisas que não pertencem a ela (uma precaução básica de segurança).
Fora isso, eu iria apenas com o que faz sentido para o projeto.
Se você estiver usando MVC (por meio de uma estrutura ou ad-hoc), uma estrutura básica com / models, / views e / controllers faz sentido. Mas mesmo se você não estiver, normalmente você tem algum tipo de camada de acesso a dados com classes que são mapeadas para suas entidades de dados; faz sentido ter um diretório para eles; você também costuma ter um monte de classes de lógica de negócios e funções utilitárias; portanto, outro diretório para elas; se você usar um sistema de modelos, os modelos entram em outro diretório; e então você provavelmente deseja um diretório 'bibliotecas', onde coloca todas as bibliotecas de terceiros. (Depois de chegar a esse ponto, você estará praticamente fazendo o MVC).
Se o projeto for realmente grande, provavelmente poderá ser dividido em submódulos funcionais; se os submódulos forem bastante independentes, faz sentido usá-los como seu nível superior, com um diretório adicional para o código comum.
fonte
Você pode seguir o layout do projeto para as duas estruturas de aplicativos mais populares:
Isso fornecerá uma estrutura extensível com base nas melhores práticas e experiências dos usuários
fonte