Cuando hablo de lenguajes de scripting estoy hablando de lenguajes como Python, Perl y (en mi caso) PHP. Después de usar CodeIgniter, Zend y muchos otros sistemas divertidos de MVC, parece claro que una cosa en la que uno parece estar de acuerdo es en la estructura de la carpeta (junto con otras cosas_como_que). Esto realmente me está causando un problema porque no puedo encontrar ninguna buena documentación sobre los beneficios de diferentes diseños de estructuras. La mayoría de las personas simplemente recomiendan uno porque es lo que usan sin tener en cuenta las mejoras en el diseño.Estructura óptima del sistema de archivos para el lenguaje de script Aplicaciones MVC
Una de las cosas en las que espero que todos podamos estar de acuerdo es que comprobar el sistema de archivos en busca de archivos existentes cuando se cargan automáticamente las clases es una práctica muy mala. Nuestras clases no deberían estar en una de las 5 ubicaciones posibles que causan una avalancha de verificaciones file_exists() para cada biblioteca que cargamos.
Así que de todos modos, estoy tratando de recopilar las estructuras de directorio que puedo comparar para encontrar las mejores prácticas en la planificación de las aplicaciones que:
- Se basan programación orientada a objetos que muy probablemente significa MVC
- de alcance internacional y los archivos/traducciones
- están abiertos a los módulos de idiomas de apoyo/plugins de manera que los paquetes completos pueden ser dejados en nuestra base de código
- definir claramente lo que está pasando y dónde buscar para las clases dadas
- Posible apoyo para múltiples sitios que se ejecutan fuera de la misma estructura (ver directorios y/o Zona de abajo)
Así que aquí es lo que tengo hasta ahora. Tenga en cuenta que libs es solo un término que significa su directorio principal de biblioteca/clase e incluso puede contener modelos según la estructura de la carpeta. Además, excluí cualquier tipo de contenido estático (JS/CSS/images) ya que ese material es realmente una idea posterior y no está relacionado con nuestro código del servidor, ¡incluso puede estar en otro servidor! Lo mismo ocurre con las memorias caché, las cargas de archivos, lang y todo el resto del contenido generado.
/controllers
/views
/models
/libs
/config
index.php
Este tipo de me recuerda el Zend Framework, que amontona todo en una carpeta libs sola (que también incluye las subcarpetas para mantener las cosas organizadas). Solo funciona para un solo sitio.
/libs
/site
/controllers
/views
/models
/config
index.php
Esto haría una versión multi-sitio de la estructura anterior.
/libs
/functions
/site
/controllers
/models
/views
/config
/site2
/controllers
/models
/views
/config
/modules
/user
/controllers
/models
/views
index.php
Esta sería la versión que permitiría a múltiples sitios y caída de los módulos. Los módulos serían aplicaciones MVC independientes como un foro que incluiría lógica de negocios, CRUD y vistas.
¿Alguien tiene una estructura perfecta que podrían compartir o guiarme en la elección de un buen diseño ampliable?
¡Parezca la estructura esquemática de Zend Framework, estoy muy contento con ella también! Permite extender fácilmente la estructura a sus necesidades. Para esto, me gusta agregar/etc dir donde almaceno el alcance del proyecto, árboles, esquema db, etc ... –
Tristemente, la respuesta con la mayoría de los votos es mía. Así que no estoy mejor que antes ... ¿Qué pasa con eso? ; P – Xeoncross