lunes, 30 de junio de 2008

Estructura basica para trabajar con Zend Framework

Zend Framework es un conjunto de componentes que nos facilitan la resolucion de problemas comunes, el acceso a una base de datos, la administracion de permisos, la creacion de WS, el manejo de OpenId, envio de mails, creacion de pdf, etc. En cada version del framework se agregan mas componentes.

El framework trabaja con MVC pero no obliga a hacerlo, podemos usar Zend Framework como libreria de una aplicacion sin ser MVC, pero este cuenta con componentes para el Manejo de MVC, Zend_View, y Zend_Controller.

En nuestra estructura de es directorios vamos a tener el siguiente esquema

* Application: aca van todos los modulos y funcionalidades del sistema. Dentro de cada modulo, dos carpetas, controllers y views. Los modelos estan fuera de application, y dentro de la raiz del proyecto, el motivo es que esten dentro del path del sistema, asi pueden ser llamados desde cualquier punto del sistema, gracias al autoload de ZF.

* Config: incluye los .ini de configuracion. Configuracion de Base de datos, o configuraciones varias.

* HTML: Esta es la unica carpeta de acceso publico, cualquiera agregando la url puede acceder desde el navegador. Esta carpeta esta dividida en varios items. Inicialmente, tenemos una carpeta clientScripts donde esta todo nuestros js, en scripts, tenemos una carpeta layout, con todos los layout del sistema, una carpeta images, y otra styles.

* Library: Aca esta la libreria de Zend, y podemos agregar una carpeta con nuestras librerias.

* Models: Todos los modelos. Los metodos publicos son estaticos, para que no sea necesario instanciar la clase para usarlos.

* Sql: Aca esta los dump de la base de datos.

Y por ultimo tenemos nuestro bootstrap, index.php , que se encarga de ejecutar los modulos, y la configuracion basica del sistema, ademas de cargar las librerias necesarias. El .htacces redirecciona todas las peticiones al index.php.


Otros articulos:
Estructura de directorios - Blog de Zsamer

2 comentarios:

Anónimo dijo...

Hombre, la estructura no está mal, pero para mi gusto todas las estructuras que usamos en Zend carecen de un problema; el uso de múltiples sites.

Actualmente trabajo para una empresa que tiene del orden de "miles de proyectos", todos completamente independientes (o no) entre si.

Si usasemos una estructura como la anterior nos volveríamos locos y se convertiría todo en un caos organizativo.

Estoy detrás de adaptar la estructura de la empresa y la estructura de Zend en una sola, donde crear varios sites no cueste nada.

Cuando tenga algo intentaré publicarlo en mi site y avistarte (tanto a ti como a Zsamer y a PhpSenior) para que comentéis a gusto ;-)

A parte de eso, genial que uses los modulos para cada zona. Yo soy partidario de crear hasta el módulo "Defaul" :-p

Pablo Morales dijo...

Si ese es el problema, podes copiar la estructura, en la cantidad de sitios que necesites, y tener un repositorio, con los archivos / modulos que se repitan por ejemplo en /var/www/repositorio/

Y lo enganchas en cada sitio diferente a traves de symlink.

Uno para library, para algun modulo en particular, y porque no tener un repositorio de Modelos.

En el grafico si ponia el listado de todos los modulos que tenia en el proyecto quedaba muy largo, por eso no esta default,que en mi caso tiene otro nombre.

Saludos.