Diferencia entre revisiones de «Estructura de Kumbia»

De KumbiaPHP Framework Wiki
 
(No se muestran 12 ediciones intermedias de 3 usuarios)
Línea 10: Línea 10:
 
Si parece que muchos controladores aumenten la complejidad de una aplicación, entonces se podrían mantener agrupados en uno solo, esto lo mantiene simple. Cuando la aplicación crezca entonces se pueden agrupar en otros controladores lógicos.  
 
Si parece que muchos controladores aumenten la complejidad de una aplicación, entonces se podrían mantener agrupados en uno solo, esto lo mantiene simple. Cuando la aplicación crezca entonces se pueden agrupar en otros controladores lógicos.  
  
==Directorios de entorno==
+
=Directorios de entorno=
  
 
Al descomprimir el paquete de kumbia 0.5 una estructura de directorios como la siguiente aparece:  
 
Al descomprimir el paquete de kumbia 0.5 una estructura de directorios como la siguiente aparece:  
  
<code lang="php">
+
<source lang="php">
 
./apps
 
./apps
 
../apps/default
 
../apps/default
Línea 42: Línea 42:
 
./scripts
 
./scripts
 
./test
 
./test
</code>
+
</source>
  
 
==Explicación==
 
==Explicación==
  
Directorio
+
{| cellpadding="2" cellspacing="2" border="2" style="border: 1px #666 solid; border-collapse: collapse;  "
Explicación
+
! style="background:#efefef;" | Directorio !! style="background:#efefef;" |  Explicación
apps
+
|-
Directorio que contiene los archivos relativos a modelos, controladores y vistas de una o varias aplicaciones. En este directorio usted desarrollará un 90% de su aplicación.  
+
| apps || Directorio que contiene los archivos relativos a modelos, controladores y vistas de una o varias aplicaciones. En este directorio usted desarrollará un 90% de su aplicación.  
cache
+
|-
Este directorio contiene las carpetas y archivos creados cuando Kumbia está cacheando una vista, un layout o un partial. Cuando inicias un proyecto el directorio se encuentra vacío.  
+
| cache || Este directorio contiene las carpetas y archivos creados cuando Kumbia está cacheando una vista, un layout o un partial. Cuando inicias un proyecto el directorio se encuentra vacío.  
config
+
|-
En este directorio están los archivos de configuración del framework y la clase config que sirve para leer los archivos .ini de configuración.  
+
| config || En este directorio están los archivos de configuración del framework y la clase config que sirve para leer los archivos .ini de configuración.  
docs
+
|-
Aquí están los archivos de licencia, información de instalación y readme.  
+
| docs || Aquí están los archivos de licencia, información de instalación y readme.  
library
+
|-
Este directorio está destinado para colocar librerías externas a Kumbia y que puedan ser fácilmente integradas al Framework  
+
| library || Este directorio está destinado para colocar librerías externas a Kumbia y que puedan ser fácilmente integradas al Framework  
logs
+
|-
Aquí se guardan los logs de texto creados por el framework por la clase Logger. Cuando inicias un proyecto este directorio se encuentra vacío.  
+
| logs || Aquí se guardan los logs de texto creados por el framework por la clase Logger. Cuando inicias un proyecto este directorio se encuentra vacío.  
public
+
|-
Son los archivos de usuario tales como imágenes, css, javascript, zips, docs, archivos temporales, etc.  
+
| public || Son los archivos de usuario tales como imágenes, css, javascript, zips, docs, archivos temporales, etc.  
scripts
+
|-
Scripts del framework Kumbia para cargar los archivos necesarios para la aplicación  
+
| scripts || Scripts del framework Kumbia para cargar los archivos necesarios para la aplicación  
test
+
|-
 +
| test || celda B2
 +
|}
  
 
=Archivos de entorno=
 
=Archivos de entorno=
  
Kumbia posee una configuración por defecto que debe funcionar bien en la mayor parte de casos aunque ésta puede personalizarse de acuerdo a necesidades específicas de cada proyecto. Se ha pensado en configurar al mínimo para poder empezar ha trabajar y dejar que Kumbia escoja la configuración más óptima. Kumbia utiliza archivos formato .ini para hacer la configuración.  
+
Kumbia posee una configuración por defecto que debe funcionar bien en la mayor parte de casos aunque ésta puede personalizarse de acuerdo a necesidades específicas de cada proyecto. Se ha pensado en configurar al mínimo para poder empezar a trabajar y dejar que Kumbia escoja la configuración más óptima. Kumbia utiliza archivos formato .ini para hacer la configuración.  
  
 
Puedes encontrar estos archivos en el directorio ./config/  
 
Puedes encontrar estos archivos en el directorio ./config/  
Línea 77: Línea 79:
 
Estructura del archivo ./config/config.ini  
 
Estructura del archivo ./config/config.ini  
  
 +
<source lang="php" line>
 
[kumbia]
 
[kumbia]
 
default_app = default
 
default_app = default
Línea 94: Línea 97:
 
log_exceptions = On
 
log_exceptions = On
 
charset = UTF-8
 
charset = UTF-8
 +
</source>
  
 
===Explicación de los parámetros ./config/config.ini===
 
===Explicación de los parámetros ./config/config.ini===
  
Atributo  
+
{| cellpadding="2" cellspacing="2" border="2" style="border: 1px #666 solid; border-collapse: collapse;  "
Descripción
+
! style="background:#efefef;" | Atributo !! style="background:#efefef;" |  Explicación
default_app  
+
|-
Directorio de la aplicación que carga por defecto  
+
| default_app   || Directorio de la aplicación que carga por defecto  
timezone  
+
|-
Zona horaria donde estás. Puedes encontrar más información en:  
+
| timezone || Zona horaria donde estás. Puedes encontrar más información en: [http://us2.php.net/manual/en/timezones.php Timezones PHP.Net]
http://es2.php.net/manual/es/timezones.php  
+
|-
mode  
+
| mode || Modo de trabajo de la aplicación. Puedes especificar development y production. La configuración se encuentra en el archivo config.ini  
Modo de trabajo de la aplicación. Puedes especificar development y production. La configuración se encuentra en el archivo config.ini  
+
|-
name  
+
| name || Nombre de la aplicación en general  
Nombre de la aplicación en general  
+
|-
interactive  
+
| interactive || Cuando esta opción tiene el valor On kumbia al momento de enrutar a un Controlador que no se encuentre disponible automáticamente cargara un vista donde te brinda la opción de generar este Controlador al cual esta ejecutando (Opción recomendable en tiempo de desarrollo)  
Cuando esta opción tiene el valor On kumbia al momento de enrutar a un Controlador que no se encuentre disponible automáticamente cargara un vista donde te brinda la opción de generar este Controlador al cual esta ejecutando (Opción recomendable en tiempo de desarrollo)  
+
|- 
controllers_dir  
+
| controllers_dir ||  Controladores que cargaran por defecto (default/controllers)
Controladores que cargaran por defecto (default/controllers)  
+
|- 
models_dir  
+
| models_dir   ||  Modelos que se cargaran por defecto (default/models)  
Modelos que se cargaran por defecto (default/models)  
+
|- 
views_dir  
+
views_dir ||  Vistas que se cargaran por defecto (default/views)  
Vistas que se cargaran por defecto (default/views)  
+
|- 
plugins_dir  
+
| plugins_dir   ||  Plugins que se cargaran por defecto (default/views)
Plugins que se cargaran por defecto (default/views)  
+
|- 
helpers_dir  
+
| helpers_dir || 
 
Helpers que se cargaran por defecto (default/helpers)  
 
Helpers que se cargaran por defecto (default/helpers)  
dbdate  
+
|- 
Formato de las fechas en la BD  
+
| dbdate   ||  Formato de las fechas en la BD  
debug  
+
|- 
Activa/desactiva el sistema de mensajes de error por pantalla  
+
debug ||  Activa/desactiva el sistema de mensajes de error por pantalla
log_exceptions  
+
|- 
Guarda mediante Logs los mensajes generados por el framework  
+
| log_exceptions ||  Guarda mediante Logs los mensajes generados por el framework  
charset  
+
|- 
Conjunto de caracteres de la aplicación  
+
| charset   ||  Conjunto de caracteres de la aplicación: UTF-8 (RECOMENDADO)  
UTF-8 (RECOMENDADO)  
+
|}
 +
 
  
 
'''Nota'''
 
'''Nota'''
Los atributos controllers_dir, models_dir, views_dir, plugins_dir y helpers_dir vienen a formar parte de las nueva forma de programar en kumbia donde con un mismo framework podemos tener varias aplicaciones ejecutándose  
+
Los atributos controllers_dir, models_dir, views_dir, plugins_dir y helpers_dir vienen a formar parte de las nueva forma de programar en kumbia donde con un mismo framework podemos tener varias aplicaciones ejecutándose
  
 
== environment.ini ==
 
== environment.ini ==
Línea 139: Línea 144:
 
===Estructura del archivo ./config/environment.ini===
 
===Estructura del archivo ./config/environment.ini===
  
 +
<source lang="php" line>
 
[development]
 
[development]
 
database.host = localhost
 
database.host = localhost
Línea 152: Línea 158:
 
database.name = test
 
database.name = test
 
database.type = mysql
 
database.type = mysql
 +
</source>
  
 
En una próxima actualización de la versión 0.5 específicamente la versión 0.5.1 se agrega una mejora en este archivo para obtener mayor velocidad en la lectura del mismo y es que se le quita el prefijo database.  
 
En una próxima actualización de la versión 0.5 específicamente la versión 0.5.1 se agrega una mejora en este archivo para obtener mayor velocidad en la lectura del mismo y es que se le quita el prefijo database.  
  
 +
<source lang="php" line>
 
[development]
 
[development]
 
host = localhost
 
host = localhost
Línea 168: Línea 176:
 
name = test
 
name = test
 
type = mysql
 
type = mysql
 +
</source>
  
 
===Explicación de los parámetros ./config/environment.ini===
 
===Explicación de los parámetros ./config/environment.ini===
  
Atributo  
+
{| cellpadding="2" cellspacing="2" border="2" style="border: 1px #666 solid; border-collapse: collapse;  "
Descripción
+
! style="background:#efefef;" | Atributo !! style="background:#efefef;" |  Explicación
host  
+
|-
El nombre del host o IP donde esta el servidor de base de datos. Ej localhost ó 127.0.0.1  
+
| host   || El nombre del host o IP donde esta el servidor de base de datos. Ej localhost ó 127.0.0.1  
user  
+
|-
Nombre de usuario con el que se conectará al sistema de base de datos.  
+
| user || Nombre de usuario con el que se conectará al sistema de base de datos.  
pass  
+
|-
Password de usuario con el que se conectará al sistema de base de datos.  
+
| pass || Password de usuario con el que se conectará al sistema de base de datos.  
name  
+
|-
Representa el nombre de una base de datos válida con la que se trabajará todas las operaciones de base datos de la aplicación.  
+
| name || Representa el nombre de una base de datos válida con la que se trabajará todas las operaciones de base datos de la aplicación.  
type  
+
|-
Driver Kumbia utilizado para la capa de abstracción de datos. RDBM a utilizar: mysql, postgresql, sqlite, pdo, ODBC.  
+
| type || Driver Kumbia utilizado para la capa de abstracción de datos. RDBM a utilizar: mysql, postgresql, sqlite, pdo, ODBC.  
dsn  
+
|-
Nombre del Data Source Name (si es necesario)  
+
| dsn || Nombre del Data Source Name (si es necesario)  
port  
+
|-
Numero del Puerto para conectar (si es necesario)  
+
| port || Numero del Puerto para conectar (si es necesario)  
pdo  
+
|-
Si se usa PHP Data Objects el valor debe ser On  
+
| pdo || Si se usa PHP Data Objects el valor debe ser On
 +
|}
  
 
==routes.ini==
 
==routes.ini==
Línea 199: Línea 209:
 
===Explicación de los parámetros ./config/routes.ini===
 
===Explicación de los parámetros ./config/routes.ini===
  
El nombre de cada sección corresponde al nombre de una aplicación y seguido se definen las políticas de enrutamiento para esa aplicación.  
+
El nombre de cada sección corresponde al nombre de una aplicación, por ejemplo: [default] , [app1] , [app2] , etc. -- teniendo en cuenta que default, app1, app2, etc. son secciones que aparecen en el archivo config.ini -- y seguido se definen las políticas de enrutamiento para esa aplicación.  
 
En caso de no utilizar modulos, una política de enrutamiento se encuentra constituida por los siguientes parámetros: controlador/accion/id = controlador/accion/id  
 
En caso de no utilizar modulos, una política de enrutamiento se encuentra constituida por los siguientes parámetros: controlador/accion/id = controlador/accion/id  
 
Si se utilizan módulos:  
 
Si se utilizan módulos:  
Línea 226: Línea 236:
 
Estructura del archivo ./config/boot.ini  
 
Estructura del archivo ./config/boot.ini  
 
[modules]  
 
[modules]  
extensions = kumbia.logger, mail.mail, libchart.libchart  
+
extensions = kumbia.logger, mail.mail, libchart.libchart
  
 
===Gestionar extensiones. Ejemplo práctico===
 
===Gestionar extensiones. Ejemplo práctico===
Línea 245: Línea 255:
 
Agregamos a la variable extensions en forms/config/core.ini el valor ziplib.main asi:  
 
Agregamos a la variable extensions en forms/config/core.ini el valor ziplib.main asi:  
 
extensions = kumbia.tags, kumbia.logger, kumbia.utils, kumbia.acl, smarty.main, ziplib.main
 
extensions = kumbia.tags, kumbia.logger, kumbia.utils, kumbia.acl, smarty.main, ziplib.main
Listo, ahora cuando inicie Kumbia esta librería estará disponible en cualquier parte de nuestra aplicación.  
+
Listo, ahora cuando inicie Kumbia esta librería estará disponible en cualquier parte de nuestra aplicación.
  
 
=Resumen=
 
=Resumen=
  
 
Si pensamos en convención sobre configuración, entonces podemos también pensar que mientras todo esté en su lugar, mejorará el orden de la aplicación y será más fácil encontrar problemas, habilitar/inhabilitar módulos y en síntesis mantener la aplicación.
 
Si pensamos en convención sobre configuración, entonces podemos también pensar que mientras todo esté en su lugar, mejorará el orden de la aplicación y será más fácil encontrar problemas, habilitar/inhabilitar módulos y en síntesis mantener la aplicación.

Revisión actual del 06:39 20 sep 2009

Introducción[editar]

En Kumbia un proyecto es un conjunto de servicios que comparten un nombre de dominio y un conjunto de modelos de datos. En un proyecto las operaciones están lógicamente agrupadas en controladores, éstos pueden trabajar independientemente o de forma distribuida con los otros del mismo proyecto. Probablemente una aplicación contenga al menos 2 controladores que administren el front y el back office de un proyecto.

Un controlador representa una o más páginas con un mismo propósito. Ejemplo: Mantenimiento de Clientes. Los controladores poseen un conjunto de acciones. Ellos representan las diversas operaciones que se pueden realizar dentro de un controlador. Por ejemplo: Crear Clientes, Actualizarlos, Revisar su Cartera, etc.

Si parece que muchos controladores aumenten la complejidad de una aplicación, entonces se podrían mantener agrupados en uno solo, esto lo mantiene simple. Cuando la aplicación crezca entonces se pueden agrupar en otros controladores lógicos.

Directorios de entorno[editar]

Al descomprimir el paquete de kumbia 0.5 una estructura de directorios como la siguiente aparece:

./apps
../apps/default
../../apps/default/controllers
../../apps/default/helpers
../../apps/default/models
../../apps/default/views
../../../apps/default/views/layouts
./cache
./config
./docs
./library
../library/excel
../library/fpdf
../library/kumbia
../library/libchart
../library/mail
../library/smarty
./logs
./public
../public/css
../public/files
../public/img
../public/javascript
../public/temp
../public/themes
./scripts
./test

Explicación[editar]

Directorio Explicación
apps Directorio que contiene los archivos relativos a modelos, controladores y vistas de una o varias aplicaciones. En este directorio usted desarrollará un 90% de su aplicación.
cache Este directorio contiene las carpetas y archivos creados cuando Kumbia está cacheando una vista, un layout o un partial. Cuando inicias un proyecto el directorio se encuentra vacío.
config En este directorio están los archivos de configuración del framework y la clase config que sirve para leer los archivos .ini de configuración.
docs Aquí están los archivos de licencia, información de instalación y readme.
library Este directorio está destinado para colocar librerías externas a Kumbia y que puedan ser fácilmente integradas al Framework
logs Aquí se guardan los logs de texto creados por el framework por la clase Logger. Cuando inicias un proyecto este directorio se encuentra vacío.
public Son los archivos de usuario tales como imágenes, css, javascript, zips, docs, archivos temporales, etc.
scripts Scripts del framework Kumbia para cargar los archivos necesarios para la aplicación
test celda B2

Archivos de entorno[editar]

Kumbia posee una configuración por defecto que debe funcionar bien en la mayor parte de casos aunque ésta puede personalizarse de acuerdo a necesidades específicas de cada proyecto. Se ha pensado en configurar al mínimo para poder empezar a trabajar y dejar que Kumbia escoja la configuración más óptima. Kumbia utiliza archivos formato .ini para hacer la configuración.

Puedes encontrar estos archivos en el directorio ./config/

config.ini[editar]

Este archivo de configuración controla los datos más generales de la aplicación realizada con el Framework tales como nombre de la aplicación, zona horario, modo debug, etc... Estructura del archivo ./config/config.ini

[kumbia]
default_app = default
timezone = "Europe/Lisbon"

[default]
mode = development
name = "KUMBIA PROJECT"
interactive = On
controllers_dir = default/controllers
models_dir = default/models
views_dir = default/views
plugins_dir = default/views
helpers_dir = default/helpers
dbdate = YYYY-MM-DD
debug = On
log_exceptions = On
charset = UTF-8

Explicación de los parámetros ./config/config.ini[editar]

Atributo Explicación
default_app Directorio de la aplicación que carga por defecto
timezone Zona horaria donde estás. Puedes encontrar más información en: Timezones PHP.Net
mode Modo de trabajo de la aplicación. Puedes especificar development y production. La configuración se encuentra en el archivo config.ini
name Nombre de la aplicación en general
interactive Cuando esta opción tiene el valor On kumbia al momento de enrutar a un Controlador que no se encuentre disponible automáticamente cargara un vista donde te brinda la opción de generar este Controlador al cual esta ejecutando (Opción recomendable en tiempo de desarrollo)
controllers_dir Controladores que cargaran por defecto (default/controllers)
models_dir Modelos que se cargaran por defecto (default/models)
views_dir Vistas que se cargaran por defecto (default/views)
plugins_dir Plugins que se cargaran por defecto (default/views)
helpers_dir

Helpers que se cargaran por defecto (default/helpers)

dbdate Formato de las fechas en la BD
debug Activa/desactiva el sistema de mensajes de error por pantalla
log_exceptions Guarda mediante Logs los mensajes generados por el framework
charset Conjunto de caracteres de la aplicación: UTF-8 (RECOMENDADO)


Nota Los atributos controllers_dir, models_dir, views_dir, plugins_dir y helpers_dir vienen a formar parte de las nueva forma de programar en kumbia donde con un mismo framework podemos tener varias aplicaciones ejecutándose

environment.ini[editar]

Este archivo de configuración contiene los datos necesarios para conectarse con las diferentes bases de datos requeridas para el desarrollo de la aplicación. Este archivo dispone de dos configuraciones paralelas, una para cuando el programador esta bajo entorno de desarrollo y otra para cuando esta en entorno de producción.

Estructura del archivo ./config/environment.ini[editar]

[development]
database.host = localhost
database.username = root
database.password =
database.name = innogest
database.type = mysql

[production]
database.host = localhost
database.username = root
database.password =
database.name = test
database.type = mysql

En una próxima actualización de la versión 0.5 específicamente la versión 0.5.1 se agrega una mejora en este archivo para obtener mayor velocidad en la lectura del mismo y es que se le quita el prefijo database.

[development]
host = localhost
username = root
password =
name = innogest
type = mysql

[production]
host = localhost
username = root
password =
name = test
type = mysql

Explicación de los parámetros ./config/environment.ini[editar]

Atributo Explicación
host El nombre del host o IP donde esta el servidor de base de datos. Ej localhost ó 127.0.0.1
user Nombre de usuario con el que se conectará al sistema de base de datos.
pass Password de usuario con el que se conectará al sistema de base de datos.
name Representa el nombre de una base de datos válida con la que se trabajará todas las operaciones de base datos de la aplicación.
type Driver Kumbia utilizado para la capa de abstracción de datos. RDBM a utilizar: mysql, postgresql, sqlite, pdo, ODBC.
dsn Nombre del Data Source Name (si es necesario)
port Numero del Puerto para conectar (si es necesario)
pdo Si se usa PHP Data Objects el valor debe ser On

routes.ini[editar]

Este archivo de configuración sirve para definir las políticas de enrutamiento estático para los controladores de la aplicación. Es decir, cuando queramos que al acceder determinado controlador/acción se dirija automáticamente a otro controlador o a otra acción. Estructura del archivo ./config/routes.ini

[default]

prueba/ruta1/ = prueba/ruta2/
prueba/ruta2/ = prueba/ruta3/

Explicación de los parámetros ./config/routes.ini[editar]

El nombre de cada sección corresponde al nombre de una aplicación, por ejemplo: [default] , [app1] , [app2] , etc. -- teniendo en cuenta que default, app1, app2, etc. son secciones que aparecen en el archivo config.ini -- y seguido se definen las políticas de enrutamiento para esa aplicación. En caso de no utilizar modulos, una política de enrutamiento se encuentra constituida por los siguientes parámetros: controlador/accion/id = controlador/accion/id Si se utilizan módulos:

modulo/controlador/accion/id = modulo/controlador/accion/id

El asterisco " * " en una política de enrutamiento sirve para indicar que ese campo de enrutamiento puede tener cualquier valor.

Cuando se utiliza la barra " / " para una política, trata del indice principal de la aplicación, esto es realmente util cuando surge la necesidad de que al no indicar ningún módulo, controlador o acción, automaticamente kumbia redirija a un controlador y acción por defecto.

Ejemplo:

[default]

Todas las peticiones que vayan al sitio principal http://localhost/app/ se enrutara internamente hacia acceso/index/

/ = acceso/index/

Todas las peticiones que vayan a http://localhost/kumbia/about/ se enrutara internamente hacia informacion/about

about/ = informacion/about/

Todas las peticiones que vayan a http://localhost/kumbia/salir/ se enrutara internamente hacia acceso/logout/

salir/ = acceso/logout/* Dentro de este mismo archivo podrás encontrar más información sobre el funcionamiento de las re-direcciones ( enrutamientos ). boot.ini En este archivo de configuración podeis añadir/eliminar los módulos que quereis cargar al iniciar Kumbia. Dichos módulos pueden ser tanto plugins, classes o librerias cuya única condición es que esten dentro de la carpeta library. Si existe un archivo library/usuario/archivo.php entonces agregamos usuario.archivo Estructura del archivo ./config/boot.ini [modules] extensions = kumbia.logger, mail.mail, libchart.libchart

Gestionar extensiones. Ejemplo práctico[editar]

Vamos a colocar la librería zipfile que puede ser encontrada en http://www.weberdev.com/get_example-4066.html, esta librería permite escribir archivos zip desde php. Ahora vamos a integrarla con kumbia:

Al descargar la librería encontramos lo siguiente:

zip.lib.php zipper.php Siguiente paso, creamos un directorio en library con un nombre para identificar la librería, en nuestro caso usamos ziplib, así: library/ziplib/zip.lib.php library/ziplib/zipper.php Ahora vamos a renombrar el archivo zip.lib.php a main.php para indicar que es el archivo principal, y quedaría así: library/ziplib/main.php library/ziplib/zipper.php

Agregamos a la variable extensions en forms/config/core.ini el valor ziplib.main asi: extensions = kumbia.tags, kumbia.logger, kumbia.utils, kumbia.acl, smarty.main, ziplib.main Listo, ahora cuando inicie Kumbia esta librería estará disponible en cualquier parte de nuestra aplicación.

Resumen[editar]

Si pensamos en convención sobre configuración, entonces podemos también pensar que mientras todo esté en su lugar, mejorará el orden de la aplicación y será más fácil encontrar problemas, habilitar/inhabilitar módulos y en síntesis mantener la aplicación.