Estructura de archivos en Zend para varios proyectos.

11 Julio 2008, 11:14 am

Bueno, en muchos sitios he visto estructuras de archivos1 para el framework de Zend. La mayoría de las propuestas son derivadas del “manual base” y IMHO todos tienen un fallo, la reutilización y la posibilidad de crear nuevos proyectos en el mismo servidor.

En la actual empresa en la que estoy trabajando, tenemos cerca de una treintena de proyectos activos, si para cada uno tuviesemos que seguir estas estructuras se volvería todo un caos. Aqui, en cambio, usamos una estructura inversa. Definiendo tan solo tres directorios de las que depende todo:

  • Public
  • Private
  • Config

Y cuando realizamos un nuevo desarrollo introducimos la abreviatura única en las tres carpetas. Por ejemplo si tuviesemos una nueva aplicación de comercio online2 y decidimos titularla “compras” introduciríamos en los tres directorios el correspondiente subdirectorio

  • Public.
    • compras
  • Private.
    • compras
  • Config.
    • compras

A simple vista puede parecer más lioso, pero una vez empiezas a usarlo ves las ventajas. Ya que todo tiene la misma estructura, todo es accesible de una forma sencilla, la administración no se hace tan incontrolable y sobretodo consigues separar la parte pública de la privada, fundamental en servidores cara a internet.

Otra de las adaptaciones que he realizado viene por necesidad. En el servidor donde está alojado mi dominio usan cPanel3, y la forma de crear subdominios es creando los subdirectorios directamente en public_html4

Bueno, pues visto lo visto e aquí mi adaptación:

La estructura de archivos para el framework de ZendComo se puede ver el screenshot está sacado del EasyEclipse5, Y está basado en el desarrollo del Proyecto01 del que ya hablamos.

Para todo el proyecto usaremos el nombre “afm” que es un acrónimo del site.

  • config->afm: En este directorio añadimos la configuración base del site.
  • library: En library añadimos el framework de Zend y el resto de librerías externas que podamos ir necesitando para el desarrollo6
  • private->afm: En este subdirectorio incluimos toda la parte privada de la aplicación.
    • admin y default: Lo primero que vemos son los módulos; en este caso solo “admin” y “default7. En cada módulo incluyo la “subestructura base” típica:
      • controllers: Aquí guardamos los “controladores” del módulo. Usando la forma de trabajar, MVC, del framework de Zend podemos poner las vistas en el directorio “views” a la misma altura8 que “controllers“.
      • views: Aquí incluimos los subdirectorios necesarios para toda la parte de la “vista” (”filters“, “helpers“, “scripts“, “layouts“,…).
    • models: Esta es la zona donde se guardan todos los “modelos” necesarios para el site.
  • public_html: De aquí colgará toda la parte publica de la web9. En este caso el subdominio se llamará, para mantener la integridad claro, “afm“.
    • public_html->afm: La información aquí suele ser básica, el “.htaccess” que redirige toda la información a “index.php” y el propio “index.php“. Aqui también irán todas los posibles directorios con la información pública: estilos, imágenes, javascripts…

Como se puede ver la estructura es fácilmente adaptable para incorporar nuevos sites, para reutilizar posible código y para tener una librería única en la que incluir el framework, a parte, claro de la necesidad de separar la parte de privada de la parte pública del site.

Con respecto a la forma de trabajar de una estructura “habitual” la única diferencia radica en el “index.php” y en el “Bootstrap.php” que deben tener en cuenta el “salto de un directorio más“. Pero, como por ahora estoy puliendo mi “Bootstrap.php10 (el “index.php” ya tiene una versión “estable“) lo dejaré para el siguiente post…

Pero si tenéis alguna duda, o no os gusta, o tenéis alguna sugerencia, no lo dudes, más abajo tenéis los comentarios!

  1. por ejemplo la usada en el manual base de Zend, la que usa Enrique Place en SurforceCMS o la que comentaba Pablo en ZendHispano []
  2. Es tan solo un ejemplo. []
  3. No se si en otros lados será igual []
  4. Siendo accesibles como sudominio.dominio.com o dominio.com/subdomino []
  5. Copiando metodología de desarrollo de Enrique Place []
  6. Como por ejemplo HTML Purifier, Blueprint o cualquier otra aplicación externa []
  7. Para mantener más la integridad de la estructura, el módulo “default” tambien lo incluyo como subdirectorio []
  8. Aunque como todo en ZF siempre puedes configurarlo a tu gusto []
  9. Siguiendo la estructura “impuesta” por el cPanel el directorio “public_html/” alberga el site principal y cualquier subdominio cuelga como subdirectorio de “public_html/“ []
  10. Basandome en el usado por Pádraic Brady para el desarrollo de su Blog con Zend Framework []
Este post:

2 Comentarios to “Estructura de archivos en Zend para varios proyectos.”

  1. www.webeame.net dijo:

    Estructura de archivos para Zend Framework…

    Ahora que Zend a sacado la versión 1.5 de su framework, encontramos en este artículo como crear una estructura de archivos para Zend centrada en poder incluir varios proyectos en el mismo servidor, ya que la mayoría de los modelos actuales estaban p…

  2. …Yo Simplemente Lloro Libertad! » Blog Archive » Estructura de archivos en Zend Framework II: Index y Bootstrap dijo:

    [...] Bueno, con prácticamente tres meses de retraso y una nueva versión del Framework de Zend (que todavía ni he podido revisar) comento la segunda parte del artículo “Estructura de archivos en Zend para varios proyectos” [...]

Deja tu respuesta: