Categorías
Técnico

Organización de un proyecto Zend Framework

Con la llegada de la nueva versión de Zend Framework, la 1.5, se han añadido nuevos componentes para facilitarnos el desarrollo de aplicaciones php con dicho framework.

Una de las características más importantes que incorpora es la que nos permite desarrollar la aplicación diseñando con el patrón Two-Step-View o lo que es lo mismo diseñando la aplicación con Layouts.

Antes de empezar a picar código debemos pensar un poco en la estructura de directorios para nuestro proyecto, cómo organizar los archivos php, javascript, css, templates,… porque, si lo vamos haciendo sobre la marcha, nos pasará puede pasar que acabemos creando archivos donde no toca o directorios con archivos php que no tienen nada que ver entre sí y esto nos dará muchos problemas a la hora de llevar a cabo el mantenimiento de la aplicación.

En el manual de Zend Framework nos enseñan dos maneras de organizar los directorios, una estructura básica y la otra estructurada en modulos. Pero estás dos soluciones se quedan un poco cortas a medida que la aplicación va creciendo, y después no sabemos donde crear los helpers para controllers, archivos temporales de la caché.

En esta entrada quería enseñar una forma un poco más completa (que no tiene que ser la mejor) de estructurar un proyecto web basado en este Zend Framework.
Los directorios están pensados para la utilización de los componentes que nos aporta Zend Framework (caché, Lucene, locales,…) y también para guardar otros archivos que no están directamente relacionados con Zend pero sí con nuestro proyecto, como son los scripts SQL, scripts de línea de comandos CLI, PHPUnit, documentación.


zfApp/
    app/
        config/
        controllers/
        layouts/
        models/
        views/
            filters/
            helpers/
            scripts/
    data/
        cache/
        indexes/
        locales/
        logs/
        sessions/
        uploads/
    docs/
    html/
        css/
        images/
        js/
        .htaccess
        index.php
    lib/
        zfApp/
        Zend/
    scripts/
    tests/
    tmp/

Una vez enseñada la estructura voy a dar una pequeña explicación de algunos directorios y archivos:

  • zfApp: Nombre de la aplicación
  • app: Directorio de la aplicación donde irá la estructura MVC (Modelo Vista Controlador).
  • config: Configuraciones Globals.php, config.ini.
  • controllers: Controladores de MVC.
  • layouts: Templates para las vistas si utilizamos el componente Zend_Layout.
  • models: Modelos de los objetos.
  • views: Páginas HTML que se generarán a partir de los controladores.
  • data: Archivos de datos, organizados por carpetas según el tipo de datos a guardar.
  • cache: Donde se guardarán los archivos de caché.
  • indexes: Archivos de índices del buscador.
  • locales: Archivos de internacionalización de la aplicación.
  • logs: Directorio para se guardarán los archivos de log.
  • sessions: Directorio donde guardar las sesiones.
  • uploads: Directorio donde se podrán subirán archivos.
  • docs: Documentación de la aplicación con phpDoc, pdf.
  • html: Directorio público.
  • css: Archivos de estilos.
  • images: Imágenes.
  • js: Archivos javascript.
  • .htaccess: Archivo de Apache para la configuración módulo mod-rewrite.
  • index.php: Archivo bootstrap, archivo PHP de entrada a nuestra aplicación.
  • lib: Librerías Zend y propias.
  • zfApp: Clases y funciones desarrolladas por nosotros, helpers de controllers,… (mismo nombre que la aplicación).
  • Zend: Librería Zend Framework.
  • scripts: Scripts CLI, generar indices Lucene, limpias cachés, SQL.
  • tests: Archivos de test de la aplicación (PHPUnit).
  • tmp: Archivos temporales.

Esta es mi propuesta de cómo se puede organizar un proyecto con Zend Framework.

7 respuestas a “Organización de un proyecto Zend Framework”

Buenas Sergi, hace un tiempo puse en mi blog una guía de estilo para el css y pedí propuestas para mejorarla.

Uno de los mejores consejos que me dieron y que más útiles nos han resultado es el de meter las imágenes decorativas que se cargan mediante el CSS en un subdirectorio dentro de css, por ejemplo en /css/images

Las imágenes quedan más ordenadas y las llamada a éstas dentro del CSS es más sencilla.

Hola Jordi, tienes razón , no había caído en este detalle, es una buena manera de tener aún mejor organizadas las imágenes y así se consigue que las llamadas a la imágenes desde los CSS más fáciles.

Muchas gracias.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s