Hay un millón y uno de estructuras de sistemas de archivos que se incluyen en la miríada de proyectos de código abierto disponibles. Cosas como módulos, archivos de idioma, dominios, bibliotecas de terceros, migraciones, internacionalización, copias de seguridad y enlaces de sistema a otras partes del sistema han dado lugar a muchos enfoques para organizar el sistema de archivos de un proyecto.
Como desarrollador de PHP, me pregunto si algún tipo de estandarización está comenzando a surgir entre los proyectos. Con PSR-0 finalmente tenemos un estándar para nombrar y cargar archivos, pero no sé nada sobre el resto de los componentes que componen el sistema o cómo se pueden manejar de una manera sensata.
Estamos tratando con mucho más que solo MVC, entonces, ¿qué ejemplos hay de proyectos grandes que manejen correctamente todas estas cosas?
Respuestas:
Realmente no es posible estandarizar cómo deben presentarse los proyectos, porque "depende".
Si introduce una estructura estándar, pero parte de ella no es relevante para los requisitos que se están desarrollando, puede terminar con un ruido adicional que no necesita. Del mismo modo, si los estándares deben funcionar para una amplia gama de proyectos, deberán incorporar demasiados escenarios dispares.
Nuestro trabajo como desarrolladores es buscar patrones y mejores prácticas y aplicarlos a la tarea en cuestión. Utilizamos nuestra experiencia y conocimientos para elegir la estructura de sistema de archivos adecuada para el proyecto en el que estamos trabajando.
fuente
No parece haber mucho esfuerzo de estandarización, y para ser honesto, no veo el beneficio. Solo hay una regla que debe cumplir, que es que nunca debe tener cosas debajo del docroot que no pertenezcan allí (una precaución de seguridad básica).
Aparte de eso, simplemente iría con lo que tiene sentido para el proyecto.
Si está utilizando MVC (ya sea a través de un marco o ad-hoc), entonces tiene sentido una estructura base con / modelos, / vistas y / controladores. Pero incluso si no lo es, generalmente tiene algún tipo de capa de acceso a datos con clases que se asignan a sus entidades de datos; tiene sentido tener un directorio para esos; También suele tener un montón de clases de lógica de negocios y funciones de utilidad, por lo que otro directorio para ellos; si usa un sistema de plantillas, las plantillas van a otro directorio; y luego probablemente desee un directorio de 'bibliotecas', donde coloque todas las bibliotecas de terceros. (Una vez que hayas llegado a este punto, de todas formas estarás haciendo MVC).
Si el proyecto es realmente grande, probablemente se puede dividir en submódulos funcionales; si los submódulos son bastante independientes, tiene sentido usarlos como su nivel superior, con un directorio adicional para el código común.
fuente
Puede seguir el diseño del proyecto para los dos marcos de aplicación más populares:
Estos proporcionarán una estructura extensible basada en las mejores prácticas y experiencias de los usuarios.
fuente