Estructura

La función de los ficheros y directorios instalados con ZWF es la siguiente:

  • base/ Contiene las clases del framework. No es necesario modificarlo.
  • cfg/ Directorio donde colocar los ficheros de configuración.
  • controllers/ Directorio donde colocar los controladores de la aplicación.
  • lib/ Directorio de libre disposición.
  • models/ Directorio donde colocar el modelo de datos de la aplicación.
  • res/ Directorio donde colocar JS, CSS, imágenes y otros recursos públicos. Accesible desde fuera.
  • views/ Directorio donde colocar las vistas de la aplicación.
  • .htaccess Directivas de Apache 2
  • index.php Controlador frontal

Módulos y espacios de nombres

Las diferentes clases y ficheros de configuración de ZWF están agrupados por módulos. Un módulo, pues, es un conjunto de clases opcionalmente unido a un fichero de configuración.

ZWF en su instalación predeterminada tiene tres módulos:

  • El módulo core contiene las clases básicas de ZWF.
  • El módulo dev contiene las clases de ayuda al desarrollo.
  • El módulo data-access contiene las clases de acceso a la base de datos.

Los módulos, a su vez, siempre se agrupan por espacios de nombres. El único espacio de nombres que se usa en ZWF es zfx y los tres módulos suministrados están bajo dicho espacio.

El directorio base/ contiene tantos subdirectorios como espacios de nombres haya disponibles. En la instalación predeterminada solo encontraremos base/zfx/.

En el interior de cada directorio correspodiente a un espacio de nombres hay tantos subdirectorios como módulos haya definidos. En la instalación predeterminada de ZWF, dentro de base/zfx/, encontraremos los directorios correspondientes a los tres módulos disponibles:

base/zfx/core/
base/zfx/dev/
base/zfx/data-access/

Todas las clases de un módulo están definidas bajo el espacio de nombres al que pertenece dicho módulo. Cuando vayamos a invocar una clase de ZWF, en la mayoría de los casos, será necesario anteponer el espacio de nombres o usar use.

Es posible añadir nuevos espacios de nombres y módulos en función de las necesidades del proyecto.

Los módulos son fácimente desactivables. Un módulo desactivado es ignorado por el sistema y no se carga su configuración ni se incluye en el sistema de autocarga de clases. El módulo core no se puede desactivar y su carga es obligatoria.

CSS, JavaScript y otros recursos

El directorio res/ está configurado en .htaccess para ser accesible públicamente. Se recomienda que el CSS, JavaScript, imágenes, vídeos, etc. de la aplicación se coloquen bajo dicho directorio.

Biblioteca de clases

A continuación se describen algunas clases suministradas con ZWF y su función. La funcionalidad se ha reducido al mínimo, siguiendo el principio de implementar sólo aquello que realmente se necesita.

La biblioteca de ZWF está documentada siguiendo el convenio PHPDocumentor y por lo tanto se puede extraer la documentación del API mediante este método.

Módulo core

  • La clase HtmlTools contiene métodos estáticos que facilitan la creación de elementos HTML como tablas o <select>
  • La clase Paginator gestiona el control y generado de código HTML para dibujar un paginador. Es altamente personalizable.
  • La clase StrFilter contiene numersos métodos de ayuda para operar con cadenas UTF-8. Es muy recomendable su uso.
  • La clase StrValidator contiene métodos de validación de tipos de datos comunes. Algunos son un stub, como el del email, que es elemental y necesitaría ser desarrollado en profundidad para cumplir con el RFC.
  • La clases Mat y Sys son stubs con la intención de ser desarrolladas en un futuro. Actualmente contienen un método estático para el redondeo de euros a dos decimales y un método para obtener una ruta local respectivamente.

Módulo data-access

  • La clase DataTools contiene herramientas útiles para el trabajo con la BD.

Biblioteca de terceros

Además de los controladores y del modelo de datos, la aplicaciones normalmente hacen uso de otras clases. Se recomienda usar el directorio lib/ para alojar dichas clases.

Dicho directorio está bajo el sistema de carga automática de clases. Para que funcione la clase y el fichero deben tener el mismo nombre.