https://wiki.kumbiaphp.com/api.php?action=feedcontributions&user=132.248.102.230&feedformat=atomKumbiaPHP Framework Wiki - Contribuciones del usuario [es]2024-03-29T15:02:12ZContribuciones del usuarioMediaWiki 1.34.1https://wiki.kumbiaphp.com/index.php?title=MODELOS&diff=303MODELOS2009-03-20T14:56:57Z<p>132.248.102.230: /* Características de los modelos: */</p>
<hr />
<div>= Introducción =<br />
Kumbia posee una doble capa de abstracción de base de datos. La primera mantiene un acceso uniforme que evita reescribir código en caso de cambiar el motor de almacenamiento y la segunda llamada ActiveRecord que está basada en su análogo de Rails; permite mapear las relaciones de la base de datos a objetos. Este mapeo permite el fácil acceso y modificación de las relaciones de la base de datos. Este capítulo explica la creación de estos objetos, la forma en que trabajan y cómo integrarlos con las demás partes de la arquitectura. <br />
<br />
= ¿Por qué usar una capa de Abstracción?=<br />
<br />
Las Bases de datos son relaciones y PHP5/Kumbia es orientado a objetos por lo tanto deberíamos acceder a las BD en forma orientada a objetos. Para esto necesitamos una interfaz que transforme la lógica de objetos a la relacional y viceversa. Este proceso es llamado mapeo objeto-relacional o en inglés ORM (Object-Relational Mapping), y es usado por Kumbia en su arquitectura MVC. <br />
<br />
Se trata de dar a los objetos, acceso a los datos sin dejar de lado las reglas de la lógica de negocios. <br />
<br />
Un beneficio de la capa da abstracción objeto/relacional es que previene un poco el uso de sintaxis específica de un motor de base de datos, ya que automáticamente traduce los llamados a los objetos modelos en instrucciones SQL optimizadas para el motor actual. <br />
<br />
Esto significa que cambiar de un motor de base de datos a otro en la mitad del proyecto es más fácil de lo que se imagina. Pasar de PostgreSQL a MySQL o a Oracle requiere de un cambio de una línea de configuración. <br />
<br />
Una capa de abstracción encapsula la lógica de datos. El resto de la aplicación no necesita saber sobre instrucciones SQL, aunque puede hacerlo si lo requiere. <br />
<br />
Ver las filas como objetos y las tablas como clases tiene otro beneficio. Permiten crear nuevos accesos para nuestras tablas. Por ejemplo si tenemos una clase Clientes y tiene un campo primer nombre, otro segundo nombre y apellidos entonces podemos crear un acceso llamado getNombre así: <br />
<br />
<source lang=php line><br />
public function getNombre(){<br />
return $this->primer_nombre.” “.$this->segundo_nombre.” “.<br />
$this->apellidos;<br />
}<br />
</source><br />
<br />
Kumbia proporciona una serie de clases (ActiveRecord y SessionRecord) que permiten realizar este mapeo y además ejecutar operaciones nativas sobre las relaciones de la base de datos de forma más humana y entendible. <br />
<br />
= Capa de Abstracción Independiente en Kumbia=<br />
<br />
Kumbia posee una primera capa que evita la reescritura del código que accede a bases de datos en caso de cambiar de un motor a otro. Posee todas las funciones básicas para efectuar operaciones sobre tablas, mantener conexiones, ejecutar consultas, etc. sin perder independencia. Esta capa funciona bajo la capa objeto relacional y es ampliamente usada por todo el framework. Debería ser usada en caso de necesitar un acceso de bajo nivel a la base de datos. <br />
<br />
Otra ventaja es que cursores y streams de conexión son encapsulados en objetos evitando escribir código repetitivo. <br />
<br />
= Adaptadores Kumbia =<br />
<br />
Mientras estos adaptadores estén disponibles se puede tener acceso a un motor de base de datos en particular. Actualmente existen: MySQL, PostgreSQL (Beta) y Oracle (beta).<br />
<br />
= Esquema de Acceso a BB.DD en Kumbia =<br />
<br />
= Modelos =<br />
La segunda capa de abstracción de datos utiliza un mapeo objeto/relacional para representar las entidades del modelo de datos en nuestras aplicaciones. Estos modelos son parte integral de la arquitectura MVC (Model View Controller) y están basados en el patrón ActiveRecord. <br />
<br />
==Características de los modelos: ==<br />
Implementan las clases de la capa de negocios: Productos, Clientes, Facturas, Empleados, etc. <br />
Mantienen los datos y su lógica juntos: Un producto tiene una cantidad y se vende sólo si está activo.<br />
Representar relaciones en el modelo: Un Cliente tiene muchas Facturas<br />
<br />
== Acceso Directo a RDBMS ==<br />
<br />
===La Clase DdBase===<br />
<br />
La clase “DbBase” personalizada para cada motor es cargada automáticamente y está disponible globalmente. El valor database.type en config/environment.ini, indica qué driver se debe cargar automáticamente. <br />
<br />
'''Crear una instancia de DdBase'''<br />
<br />
Ya que los parámetros de conexión de la base de datos están definidos en config/environment.ini podemos utilizar esta función para crear el objeto db. <br />
<br />
'''Ejemplo:'''<br />
<br />
<source lang=php line><br />
<?php<br />
$db = DbBase::raw_connect();<br />
?><br />
</source><br />
<br />
===Propiedades de la Clase DB ===<br />
<br />
====$db->Id_Connection====<br />
<br />
Posee una referencia al stream de conexión a la base de datos <br />
<br />
====$db->dbUser====<br />
<br />
Usuario de la base de datos utilizado para crear la conexión <br />
<br />
====$db->dbPass ====<br />
<br />
Password del Usuario de la base de datos utilizado para crear la conexión <br />
<br />
====$db->dbHost ====<br />
<br />
Host de la base de datos utilizado para crear la conexión <br />
<br />
====$db->dbName ====<br />
<br />
Nombre de la base de datos actual <br />
<br />
====$db->dbPort==== <br />
<br />
Puerto de la base de datos utilizado para crear la conexión <br />
<br />
====$db->lastError ====<br />
<br />
Último error generado por el motor de la base de datos producido en alguna operación SQL. <br />
<br />
====$db->lastResultQuery ====<br />
<br />
Ultima sentencia SQL ejecutada en la base de datos en la instancia <br />
<br />
===Métodos de la Clase DB ===<br />
<br />
====connect()====<br />
<br />
'''Descripción:'''<br />
<br />
Permite crear o reestablecer una conexión con el motor de base de datos. <br />
<br />
'''Sintaxis:''' <br />
<br />
<source lang=php line><br />
$db->connect([string $host], [string $user], [string $password], [string $database_name])<br />
</source><br />
<br />
====query()====<br />
<br />
'''Descripción:'''<br />
<br />
Permite enviar sentencias SQL al motor de base de datos. El parámetro debug permite ver un mensaje del SQL que es enviado al motor de base de datos. <br />
<br />
'''Sintaxis: '''<br />
<br />
<source lang=php line><br />
$db->query(string $sql, [bool $debug=false])<br />
</source><br />
<br />
'''Ejemplo: '''<br />
<br />
<source lang=php line><br />
<?php<br />
$db = db::raw_connect();<br />
$db->query(“update clientes set estado = ‘A’”);<br />
$db->close();<br />
?><br />
</source><br />
<br />
====close()==== <br />
<br />
'''Descripción:''' <br />
<br />
Cierra la conexión encapsulada en el objeto <br />
<br />
'''Sintaxis:''' <br />
<br />
<source lang=php line><br />
$db->close()<br />
</source><br />
<br />
====fetch_array()====<br />
<br />
'''Descripción: '''<br />
<br />
Recorre el cursor ejecutado en la última operación select. <br />
<br />
'''Sintaxis: '''<br />
<br />
<source lang=php line><br />
$db->fetch_array([cursor $cursor], [int $tipo_resultado=DB_BOTH])<br />
</source><br />
<br />
'''Ejemplo:''' <br />
<br />
<source lang=php line><br />
<?php<br />
$db = db::raw_connect();<br />
$db->query(“select codigo, nombre from productos”);<br />
<br />
while($producto = $db->fetch_array()){<br />
print$producto[‘nombre’];<br />
}//fin while<br />
<br />
$db->close();<br />
?><br />
</source><br />
<br />
Los tipos de resultado pueden ser: <br />
<br />
db::DB_ASSOC: Array con índices asociativos de los nombres de los campos.<br />
db::DB_NUM: Array con índices numéricos que indican la posición del campo en el select.<br />
db::DB_BOTH: Array con índices tanto numéricos como asociativos.<br />
<br />
====num_rows()==== <br />
<br />
'''Descripción:'''<br />
<br />
Devuelve el número de filas de la última instrucción select enviada al motor de base de datos. <br />
<br />
'''Sintaxis:''' <br />
<br />
<source lang=php line><br />
$db->num_rows([cursor $cursor]); <br />
</source><br />
<br />
'''Ejemplo:'''<br />
<br />
<source lang=php line><br />
<?php<br />
$db = db::raw_connect;<br />
$db->query(“select codigo, nombre from productos”);<br />
print “Hay ”.$db->num_rows().“ productos “;<br />
$db->close();<br />
?><br />
</source><br />
<br />
====field_name()====<br />
<br />
'''Descripción:'''<br />
<br />
Devuelve el nombre del campo en la posición $number del último select enviado al motor de base de datos. <br />
<br />
'''Sintaxis:''' <br />
<br />
<source lang=php line><br />
$db->field_name(int $number, [cursor $cursor]);<br />
</source><br />
<br />
====data_seek()====<br />
<br />
'''Descripción:'''<br />
<br />
Se mueve a la posición $number del cursor de la última instrucción select enviada al motor de base de datos. <br />
<br />
'''Sintaxis:''' <br />
<br />
<source lang=php line><br />
$db->data_seek(int $number, [cursor $cursor]);<br />
</source><br />
<br />
====affected_rows()====<br />
<br />
'''Descripción:'''<br />
<br />
Devuelve el número de filas afectadas en la última instrucción insert, update o delete. <br />
<br />
'''Sintaxis:''' <br />
<br />
<source lang=php line><br />
$db->affected_rows();<br />
</source><br />
<br />
====error()====<br />
<br />
'''Descripción: '''<br />
<br />
Devuelve la cadena descriptiva del último error generado por base de datos producido por la última instrucción SQL. <br />
<br />
'''Sintaxis:'''<br />
<source lang=php line><br />
$db->error();<br />
</source><br />
<br />
====no_error()====<br />
<br />
'''Descripción:'''<br />
<br />
Devuelve el número interno del último error generado por base de datos producido por la última instrucción SQL. <br />
<br />
'''Sintaxis: '''<br />
<br />
<source lang=php line><br />
$db->no_error();<br />
</source><br />
<br />
====find()====<br />
<br />
'''Descripción:'''<br />
<br />
Ejecuta un Select en el motor con los parámetros enviados y devuelve un Array con los resultados. <br />
<br />
'''Sintaxis:'''<br />
<br />
<source lang=php line><br />
$db->find(string $table, [string $where=”1=1”], [string $fields=”*”], [string $orderBy=”1”]);<br />
</source><br />
<br />
'''Ejemplo: '''<br />
<br />
<source lang=php line><br />
<?php<br />
$db = db::raw_connect();<br />
foreach($db->find(“productos”) as $producto){<br />
print $producto[‘nombre’];<br />
} //fin del foreach <br />
$db->close();<br />
?><br />
</source><br />
<br />
====in_query()====<br />
<br />
'''Descripción:'''<br />
<br />
Devuelve el resultado de una instrucción SQL en un array listo para ser recorrido. <br />
<br />
'''Sintaxis: '''<br />
<source lang=php line><br />
$db->in_query(string $sql, [bool $debug=false], [int $tipo_resultado = db::DB_BOTH]);<br />
</source><br />
<br />
'''Ejemplo:''' <br />
<br />
<source lang=php line><br />
<?php<br />
$db = db::raw_connect();<br />
foreach($db->in_query(“select * from productos”) as $producto){<br />
print $producto[‘nombre’];<br />
}//fin del foreach <br />
$db->close(); <br />
?><br />
</source><br />
<br />
====in_query_assoc()==== <br />
<br />
'''Descripción:'''<br />
<br />
Devuelve el resultado de una instrucción SQL en un array con indexado asociativo listo para ser recorrido. <br />
<br />
'''Sintaxis:''' <br />
<source lang=php line><br />
$db->in_query_assoc(string $sql, [bool $debug=false]);<br />
</source><br />
<br />
====in_query_num()====<br />
<br />
'''Descripción:'''<br />
<br />
Devuelve el resultado de una instrucción SQL en un array con indexado numérico listo para ser recorrido. <br />
<br />
'''Sintaxis:'''<br />
<br />
<source lang=php line><br />
$db->in_query_num(string $sql, [bool $debug=false]);<br />
</source><br />
<br />
====fetch_one()====<br />
<br />
'''Descripción:'''<br />
<br />
Devuelve la primera fila de un select . Es útil cuando el select devuelve una sola fila <br />
<br />
'''Sintaxis:''' <br />
<source lang=php line><br />
$db->fetch_one(string $sql, [bool $debug=false]);<br />
</source><br />
<br />
'''Ejemplo:'''<br />
<source lang=php line><br />
<?php<br />
$db = db::raw_connect();<br />
$producto = $db->fetch_one(“select * from producto where codigo = 1”);<br />
print $producto[‘nombre’];<br />
$db->close();<br />
?><br />
</source><br />
<br />
====table_exists()====<br />
<br />
Descripción: Devuelve verdadero si la tabla $table existe en la base de datos, falso de lo contrario. <br />
<br />
Sintaxis: <br />
<source lang=php line><br />
$db->table_exists(string $table);<br />
</source></div>132.248.102.230https://wiki.kumbiaphp.com/index.php?title=Primera_Aplicaci%C3%B3n_en_Kumbia&diff=302Primera Aplicación en Kumbia2009-03-19T17:42:01Z<p>132.248.102.230: /* Repitiendo la Historia */</p>
<hr />
<div>El presente capítulo tiene como objetivo entender la creación de una primera aplicación usando Kumbia, que nos servirá para entender la arquitectura MVC y algunos características interesantes. <br />
<br />
= Creando una nueva aplicación =<br />
<br />
Una vez obtenida la copia del framework descomprimimos y renombramos la carpeta con el nombre de nuestro proyecto, para efecto del ejemplo llamaremos a nuestro proyecto kumbia, tal como se muestra en la imagen. <br />
<br />
Dentro del directorio Kumbia y se hace énfasis que kumbia es nuestro proyecto este podría tener cualquier otro nombre, tendremos un árbol de directorios tal como se muestra en la siguiente imagen. <br />
<br />
Antes de continuar vamos a verificar que todo este trabajando bien en nuestras configuraciones a nivel de servidor web, para esto abrimos nuestro navegador web y colocamos http://localhost/kumbia, si todo esta funcionando bien debería mostrarnos la siguiente imagen. <br />
<br />
= Hola Kumbia =<br />
<br />
Ahora tenemos que escribir el famosos Hola Mundo! pero nosotros hicimos un pequeño cambio y sera Hola Kumbia! Pensando en esto recordemos el modelo MVC. Según esto, Kumbia debería aceptar una petición que buscaría en controlador y en éste, una acción que atendería la petición, luego el controlador utilizaría una vista para mostrar la información al usuario.<br />
Para escribir el código de nuestro Hola Kumbia!, no necesitamos sino un controlador y una vista. No necesitamos modelos ya que no estamos trabajando la información de una base de datos.<br />
<br />
Nos ubicamos en el directorio apps/default/controllers aquí estarán nuestros controladores, para crear un controlador es importante tener en cuenta las convenciones de nombre que utiliza el Framework, para entender mejor nosotros llamaremos a nuestro controlador saludo_controller.php nótese el sufijo _controller.php esto forma parte de la convención de nombre y esto hace que Kumbia identifique ese archivo como un controlador.<br />
<br />
Dentro de este archivo colocaremos las siguientes lineas de codigo.<br />
<br />
'''saludos_controller.php'''<br />
<source lang="php" line><br />
<?php <br />
class SaludoController extends ApplicationController {<br />
public function index() {}<br />
}<br />
?> <br />
</source><br />
<br />
como vemos en una clase con un método index, notese que también esta el sufijo Controller al final de la declaración de la clase esto la identifica como una clase controladora y esta hereda (extends) de la superclase ApplicationController con lo que adquiere las propiedades de una clase controladora.<br />
<br />
=Kumbia URLS= <br />
Para continuar de una manera que vayamos entendiendo el funcionamiento del framework es importante entender sus URL, hagamos una descomposición de esta URL <br />
<br />
Cualquier otra información pasada por URL es tomada como parámetro para propósito de nuestra aplicación.<br />
<br />
=Nuestra Primera Acción=<br />
Retomando la parte 1 de este apartado, vamos a ejecutar desde el navegador nuestro controlador saludo y la acción index de la siguiente manera http://localhost/kumbia/saludo/index nos muestra lo siguiente. <br />
<br />
<source lang="php" line><br />
<?php<br />
class SaludoController extends ApplicationController { <br />
function hola(){<br />
}<br />
}<br />
?><br />
</source><br />
<br />
Como podemos darnos cuenta tenemos una acción vacía sin nada que mostrar al usuario que realizo la solicitud, esto es sencillo de deducir ya que no tenemos ninguna vista asociada a nuestra acción. <br />
Agreguemosle contenido a la acción index, esto lo hacemos creando un directorio con el mismo nombre de nuestro controlador en este caso deberia llamarse saludo y dentro de este estaran todas las vistas asociadas a las acciones que necesiten mostrar alguna información.<br />
Para efecto del ejemplo llamamos a una acción llamada index por lo tanto creamos un archivo llamado index.phtml fijese que el archivo se llama igual que la acción, este archivo lo creamos en el directorio '''apps/default/views/saludo/index.phtml'''<br />
<br />
Una vez creado este archivo le agregamos un poco de contenido...<br />
<br />
<source lang="php" line><br />
<h1>Hola Kumbia</h1> <br />
</source><br />
<br />
Ahora si volvemos ejecutar desde nuestro navegador web http://localhost/kumbia/saludo/index si nos debe mostrar el contenido del archivo index.phtml, tal como se muestra en la imagen. <br />
<br />
Ahora si visualizamos en el explorador se entiende que Kumbia automáticamente carga la vista con el mismo nombre la acción en el directorio con el nombre del controlador seleccionado. <br />
Poniendo a consideración podríamos decir que las vistas permiten la salida al usuario usando PHP embebido en HTML. Por esto las vistas poseen extensión phtml a diferencia de los controladores que poseen PHP puro y por esto su extensión .php. <br />
<br />
Pues como se ve ya hemos ejecutado la primera acción en Kumbia esto nos permite apreciar el comportamiento del framework.<br />
<br />
=Agregando más Contenido=<br />
<br />
Ahora vamos a mostrar la hora y fecha haciendo uso de la función date(), con esto evitamos tener un contenido estático y tener un sitio mas dinámico, editamos el archivo saludo_controller.php.<br />
saludo_controller.php <br />
<br />
<source lang="php" line><br />
<?php <br />
public class SaludoController extends ApplicationController {<br />
<br />
public function index() {<br />
$this->fecha = date("Y-m-d H:i");<br />
}<br />
<br />
}<br />
?> <br />
</source><br />
<br />
Y la vista index.phtml quedaria asi:<br />
<br />
index.phtml<br />
<br />
<source lang="php" line><br />
<h1>Hola Kumbia</h1> <br />
<? echo $fecha ?> <br />
</source><br />
<br />
'''Nota'''<br />
Cuando hacemos uso $this sobre una variable en el controlador, como se puede apreciar con $this->fecha automáticamente tenemos esa variable en la vista de la siguiente manera $fecha, esto porque kumbia trabaja con variable de instancia. <br />
Ahora si volvemos a ejecutar http://localhost/kumbia/saludo/index obtendremos la hora y fecha del momento que se haga la petición tal como se muestra en la imagen.<br />
<br />
<br />
=Repitiendo la Historia=<br />
<br />
Ahora vamos a crear otro controlador que lo llamaremos despedida haciendo memoria tendremos un archivo en apps/default/controllers/despedida_controller.php <br />
<br />
despedida_controller.php <br />
<br />
<source lang="php" line><br />
<?php <br />
public class DespedidaController extends ApplicationController {<br />
public function adios() {<br />
}<br />
}<br />
}<br />
?> <br />
</source><br />
<br />
Tal como se menciona arriba creamos una vista con el nombre de la acción en este caso nuestra vista en apps/default/views/despedida/adios.phtml<br />
<br />
adios.phtml <br />
<br />
<source lang="php" line><br />
<h1>Adios</h1><br />
<? echo link_to("saludo/index", "Volver a Saludar") ?><br />
</source><br />
<br />
Ahora colocamos en nuestro navegador http://localhost/kumbia/despedida/adios obtendremos un texto y un vinculo hacia nuestro controlador saludo y la acción index.<br />
<br />
link_to, es un helper que ofrece kumbia para facilitar al momento de programar este helper es equivalente hacer<br />
<a href="kumbia/saludo/index">Volver a Saludar</a> esto funciona bien, pero que sucederia si decidimos cambiar el nombre de la aplicacion de kumbia a demo por ejemplo, significa que deberias cambiar los vinculos de la aplicación para que apunten a la nueva ubicación.</div>132.248.102.230https://wiki.kumbiaphp.com/index.php?title=Primera_Aplicaci%C3%B3n_en_Kumbia&diff=301Primera Aplicación en Kumbia2009-03-19T17:28:00Z<p>132.248.102.230: /* Hola Kumbia */</p>
<hr />
<div>El presente capítulo tiene como objetivo entender la creación de una primera aplicación usando Kumbia, que nos servirá para entender la arquitectura MVC y algunos características interesantes. <br />
<br />
= Creando una nueva aplicación =<br />
<br />
Una vez obtenida la copia del framework descomprimimos y renombramos la carpeta con el nombre de nuestro proyecto, para efecto del ejemplo llamaremos a nuestro proyecto kumbia, tal como se muestra en la imagen. <br />
<br />
Dentro del directorio Kumbia y se hace énfasis que kumbia es nuestro proyecto este podría tener cualquier otro nombre, tendremos un árbol de directorios tal como se muestra en la siguiente imagen. <br />
<br />
Antes de continuar vamos a verificar que todo este trabajando bien en nuestras configuraciones a nivel de servidor web, para esto abrimos nuestro navegador web y colocamos http://localhost/kumbia, si todo esta funcionando bien debería mostrarnos la siguiente imagen. <br />
<br />
= Hola Kumbia =<br />
<br />
Ahora tenemos que escribir el famosos Hola Mundo! pero nosotros hicimos un pequeño cambio y sera Hola Kumbia! Pensando en esto recordemos el modelo MVC. Según esto, Kumbia debería aceptar una petición que buscaría en controlador y en éste, una acción que atendería la petición, luego el controlador utilizaría una vista para mostrar la información al usuario.<br />
Para escribir el código de nuestro Hola Kumbia!, no necesitamos sino un controlador y una vista. No necesitamos modelos ya que no estamos trabajando la información de una base de datos.<br />
<br />
Nos ubicamos en el directorio apps/default/controllers aquí estarán nuestros controladores, para crear un controlador es importante tener en cuenta las convenciones de nombre que utiliza el Framework, para entender mejor nosotros llamaremos a nuestro controlador saludo_controller.php nótese el sufijo _controller.php esto forma parte de la convención de nombre y esto hace que Kumbia identifique ese archivo como un controlador.<br />
<br />
Dentro de este archivo colocaremos las siguientes lineas de codigo.<br />
<br />
'''saludos_controller.php'''<br />
<source lang="php" line><br />
<?php <br />
class SaludoController extends ApplicationController {<br />
public function index() {}<br />
}<br />
?> <br />
</source><br />
<br />
como vemos en una clase con un método index, notese que también esta el sufijo Controller al final de la declaración de la clase esto la identifica como una clase controladora y esta hereda (extends) de la superclase ApplicationController con lo que adquiere las propiedades de una clase controladora.<br />
<br />
=Kumbia URLS= <br />
Para continuar de una manera que vayamos entendiendo el funcionamiento del framework es importante entender sus URL, hagamos una descomposición de esta URL <br />
<br />
Cualquier otra información pasada por URL es tomada como parámetro para propósito de nuestra aplicación.<br />
<br />
=Nuestra Primera Acción=<br />
Retomando la parte 1 de este apartado, vamos a ejecutar desde el navegador nuestro controlador saludo y la acción index de la siguiente manera http://localhost/kumbia/saludo/index nos muestra lo siguiente. <br />
<br />
<source lang="php" line><br />
<?php<br />
class SaludoController extends ApplicationController { <br />
function hola(){<br />
}<br />
}<br />
?><br />
</source><br />
<br />
Como podemos darnos cuenta tenemos una acción vacía sin nada que mostrar al usuario que realizo la solicitud, esto es sencillo de deducir ya que no tenemos ninguna vista asociada a nuestra acción. <br />
Agreguemosle contenido a la acción index, esto lo hacemos creando un directorio con el mismo nombre de nuestro controlador en este caso deberia llamarse saludo y dentro de este estaran todas las vistas asociadas a las acciones que necesiten mostrar alguna información.<br />
Para efecto del ejemplo llamamos a una acción llamada index por lo tanto creamos un archivo llamado index.phtml fijese que el archivo se llama igual que la acción, este archivo lo creamos en el directorio '''apps/default/views/saludo/index.phtml'''<br />
<br />
Una vez creado este archivo le agregamos un poco de contenido...<br />
<br />
<source lang="php" line><br />
<h1>Hola Kumbia</h1> <br />
</source><br />
<br />
Ahora si volvemos ejecutar desde nuestro navegador web http://localhost/kumbia/saludo/index si nos debe mostrar el contenido del archivo index.phtml, tal como se muestra en la imagen. <br />
<br />
Ahora si visualizamos en el explorador se entiende que Kumbia automáticamente carga la vista con el mismo nombre la acción en el directorio con el nombre del controlador seleccionado. <br />
Poniendo a consideración podríamos decir que las vistas permiten la salida al usuario usando PHP embebido en HTML. Por esto las vistas poseen extensión phtml a diferencia de los controladores que poseen PHP puro y por esto su extensión .php. <br />
<br />
Pues como se ve ya hemos ejecutado la primera acción en Kumbia esto nos permite apreciar el comportamiento del framework.<br />
<br />
=Agregando más Contenido=<br />
<br />
Ahora vamos a mostrar la hora y fecha haciendo uso de la función date(), con esto evitamos tener un contenido estático y tener un sitio mas dinámico, editamos el archivo saludo_controller.php.<br />
saludo_controller.php <br />
<br />
<source lang="php" line><br />
<?php <br />
public class SaludoController extends ApplicationController {<br />
<br />
public function index() {<br />
$this->fecha = date("Y-m-d H:i");<br />
}<br />
<br />
}<br />
?> <br />
</source><br />
<br />
Y la vista index.phtml quedaria asi:<br />
<br />
index.phtml<br />
<br />
<source lang="php" line><br />
<h1>Hola Kumbia</h1> <br />
<? echo $fecha ?> <br />
</source><br />
<br />
'''Nota'''<br />
Cuando hacemos uso $this sobre una variable en el controlador, como se puede apreciar con $this->fecha automáticamente tenemos esa variable en la vista de la siguiente manera $fecha, esto porque kumbia trabaja con variable de instancia. <br />
Ahora si volvemos a ejecutar http://localhost/kumbia/saludo/index obtendremos la hora y fecha del momento que se haga la petición tal como se muestra en la imagen.<br />
<br />
<br />
=Repitiendo la Historia=<br />
<br />
Ahora vamos a crear otro controlador que lo llamaremos despedida haciendo memoria tendremos un archivo en apps/default/controllers/despedida_controller.php <br />
<br />
despedida_controller.php <br />
<br />
<source lang="php" line><br />
<?php <br />
public class DespedidaController extends ApplicationController {<br />
public function adios() {<br />
}<br />
}<br />
}<br />
?> <br />
</source><br />
<br />
Tal como se menciona arriba creamos una vista con el nombre de la acción en este caso nuestra vista en apps/default/views/despedida/adios.phtml<br />
<br />
adios.phtml <br />
<br />
<source lang="php" line><br />
<h1>Adios</h1><br />
<? echo link_to("saludo/index", "Volver a Saludar") ?><br />
</source><br />
<br />
Ahora colocamos en nuestro navegador http://localhost/kumbia/despedida/adios obtendremos un texto y un vinculo hacia nuestro controlador saludo y la acción index.<br />
<br />
link_to, es un helpers que ofrece kumbia para facilitar al momento de programar este helpers es equivalente hacer<br />
<a href="kumbia/saludo/index">Volver a Saludar</a> esto funciona bien, pero que sucederia si decidimos cambiar el nombre de la aplicacion de kumbia a demo por ejemplo, significa que deberias cambiar los vinculos de la aplicacion para que apunten a la nueva ubicación.</div>132.248.102.230https://wiki.kumbiaphp.com/index.php?title=Estructura_de_Kumbia&diff=300Estructura de Kumbia2009-03-19T17:01:56Z<p>132.248.102.230: /* Archivos de entorno */</p>
<hr />
<div>=Introducción=<br />
<br />
En Kumbia un proyecto es un conjunto de servicios que comparten un nombre de dominio y un conjunto de modelos de datos. <br />
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. <br />
Probablemente una aplicación contenga al menos 2 controladores que administren el front y el back office de un proyecto. <br />
<br />
Un controlador representa una o más páginas con un mismo propósito. Ejemplo: Mantenimiento de Clientes. <br />
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. <br />
<br />
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. <br />
<br />
=Directorios de entorno=<br />
<br />
Al descomprimir el paquete de kumbia 0.5 una estructura de directorios como la siguiente aparece: <br />
<br />
<source lang="php"><br />
./apps<br />
../apps/default<br />
../../apps/default/controllers<br />
../../apps/default/helpers<br />
../../apps/default/models<br />
../../apps/default/views<br />
../../../apps/default/views/layouts<br />
./cache<br />
./config<br />
./docs<br />
./library<br />
../library/excel<br />
../library/fpdf<br />
../library/kumbia<br />
../library/libchart<br />
../library/mail<br />
../library/smarty<br />
./logs<br />
./public<br />
../public/css<br />
../public/files<br />
../public/img<br />
../public/javascript<br />
../public/temp<br />
../public/themes<br />
./scripts<br />
./test<br />
</source><br />
<br />
==Explicación==<br />
<br />
{| cellpadding="2" cellspacing="2" border="2" style="border: 1px #666 solid; border-collapse: collapse; "<br />
! style="background:#efefef;" | Directorio !! style="background:#efefef;" | Explicación<br />
|-<br />
| 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. <br />
|-<br />
| 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. <br />
|-<br />
| 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. <br />
|-<br />
| docs || Aquí están los archivos de licencia, información de instalación y readme. <br />
|-<br />
| library || Este directorio está destinado para colocar librerías externas a Kumbia y que puedan ser fácilmente integradas al Framework <br />
|-<br />
| 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. <br />
|-<br />
| public || Son los archivos de usuario tales como imágenes, css, javascript, zips, docs, archivos temporales, etc. <br />
|-<br />
| scripts || Scripts del framework Kumbia para cargar los archivos necesarios para la aplicación <br />
|-<br />
| test || celda B2<br />
|}<br />
<br />
=Archivos de entorno=<br />
<br />
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. <br />
<br />
Puedes encontrar estos archivos en el directorio ./config/ <br />
<br />
==config.ini==<br />
<br />
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... <br />
Estructura del archivo ./config/config.ini <br />
<br />
<source lang="php" line><br />
[kumbia]<br />
default_app = default<br />
timezone = "Europe/Lisbon"<br />
<br />
[default]<br />
mode = development<br />
name = "KUMBIA PROJECT"<br />
interactive = On<br />
controllers_dir = default/controllers<br />
models_dir = default/models<br />
views_dir = default/views<br />
plugins_dir = default/views<br />
helpers_dir = default/helpers<br />
dbdate = YYYY-MM-DD<br />
debug = On<br />
log_exceptions = On<br />
charset = UTF-8<br />
</source><br />
<br />
===Explicación de los parámetros ./config/config.ini===<br />
<br />
{| cellpadding="2" cellspacing="2" border="2" style="border: 1px #666 solid; border-collapse: collapse; "<br />
! style="background:#efefef;" | Atributo !! style="background:#efefef;" | Explicación<br />
|-<br />
| default_app || Directorio de la aplicación que carga por defecto <br />
|-<br />
| timezone || Zona horaria donde estás. Puedes encontrar más información en: [http://es2.php.net/manual/es/timezones.php Timezones PHP.Net]<br />
|-<br />
| mode || Modo de trabajo de la aplicación. Puedes especificar development y production. La configuración se encuentra en el archivo config.ini <br />
|-<br />
| name || Nombre de la aplicación en general <br />
|-<br />
| 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) <br />
|- <br />
| controllers_dir || Controladores que cargaran por defecto (default/controllers) <br />
|- <br />
| models_dir || Modelos que se cargaran por defecto (default/models) <br />
|- <br />
| views_dir || Vistas que se cargaran por defecto (default/views) <br />
|- <br />
| plugins_dir || Plugins que se cargaran por defecto (default/views) <br />
|- <br />
| helpers_dir || <br />
Helpers que se cargaran por defecto (default/helpers) <br />
|- <br />
| dbdate || Formato de las fechas en la BD <br />
|- <br />
| debug || Activa/desactiva el sistema de mensajes de error por pantalla <br />
|- <br />
| log_exceptions || Guarda mediante Logs los mensajes generados por el framework <br />
|- <br />
| charset || Conjunto de caracteres de la aplicación: UTF-8 (RECOMENDADO) <br />
|}<br />
<br />
<br />
'''Nota'''<br />
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<br />
<br />
== environment.ini ==<br />
<br />
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. <br />
<br />
===Estructura del archivo ./config/environment.ini===<br />
<br />
<source lang="php" line><br />
[development]<br />
database.host = localhost<br />
database.username = root<br />
database.password =<br />
database.name = innogest<br />
database.type = mysql<br />
<br />
[production]<br />
database.host = localhost<br />
database.username = root<br />
database.password =<br />
database.name = test<br />
database.type = mysql<br />
</source><br />
<br />
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. <br />
<br />
<source lang="php" line><br />
[development]<br />
host = localhost<br />
username = root<br />
password =<br />
name = innogest<br />
type = mysql<br />
<br />
[production]<br />
host = localhost<br />
username = root<br />
password =<br />
name = test<br />
type = mysql<br />
</source><br />
<br />
===Explicación de los parámetros ./config/environment.ini===<br />
<br />
{| cellpadding="2" cellspacing="2" border="2" style="border: 1px #666 solid; border-collapse: collapse; "<br />
! style="background:#efefef;" | Atributo !! style="background:#efefef;" | Explicación<br />
|-<br />
| host || El nombre del host o IP donde esta el servidor de base de datos. Ej localhost ó 127.0.0.1 <br />
|-<br />
| user || Nombre de usuario con el que se conectará al sistema de base de datos. <br />
|-<br />
| pass || Password de usuario con el que se conectará al sistema de base de datos. <br />
|-<br />
| 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. <br />
|-<br />
| type || Driver Kumbia utilizado para la capa de abstracción de datos. RDBM a utilizar: mysql, postgresql, sqlite, pdo, ODBC. <br />
|-<br />
| dsn || Nombre del Data Source Name (si es necesario) <br />
|-<br />
| port || Numero del Puerto para conectar (si es necesario) <br />
|-<br />
| pdo || Si se usa PHP Data Objects el valor debe ser On<br />
|}<br />
<br />
==routes.ini==<br />
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 <br />
<br />
[default]<br />
;prueba/ruta1/ = prueba/ruta2/<br />
;prueba/ruta2/ = prueba/ruta3/<br />
<br />
===Explicación de los parámetros ./config/routes.ini===<br />
<br />
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. <br />
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 <br />
Si se utilizan módulos: <br />
<br />
modulo/controlador/accion/id = modulo/controlador/accion/id <br />
<br />
El asterisco " * " en una política de enrutamiento sirve para indicar que ese campo de enrutamiento puede tener cualquier valor. <br />
<br />
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. <br />
<br />
Ejemplo: <br />
<br />
[default]<br />
;Todas las peticiones que vayan al sitio principal http://localhost/app/ se enrutara internamente hacia acceso/index/ <br />
/ = acceso/index/<br />
<br />
;Todas las peticiones que vayan a http://localhost/kumbia/about/ se enrutara internamente hacia informacion/about<br />
about/ = informacion/about/<br />
<br />
;Todas las peticiones que vayan a http://localhost/kumbia/salir/ se enrutara internamente hacia acceso/logout/<br />
salir/ = acceso/logout/*<br />
Dentro de este mismo archivo podrás encontrar más información sobre el funcionamiento de las re-direcciones ( enrutamientos ). <br />
boot.ini <br />
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. <br />
Si existe un archivo library/usuario/archivo.php entonces agregamos usuario.archivo <br />
Estructura del archivo ./config/boot.ini <br />
[modules] <br />
extensions = kumbia.logger, mail.mail, libchart.libchart<br />
<br />
===Gestionar extensiones. Ejemplo práctico===<br />
<br />
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: <br />
<br />
Al descargar la librería encontramos lo siguiente: <br />
<br />
zip.lib.php <br />
zipper.php <br />
Siguiente paso, creamos un directorio en library con un nombre para identificar la librería, en nuestro caso usamos ziplib, así: <br />
library/ziplib/zip.lib.php <br />
library/ziplib/zipper.php <br />
Ahora vamos a renombrar el archivo zip.lib.php a main.php para indicar que es el archivo principal, y quedaría así: <br />
library/ziplib/main.php <br />
library/ziplib/zipper.php <br />
<br />
Agregamos a la variable extensions en forms/config/core.ini el valor ziplib.main asi: <br />
extensions = kumbia.tags, kumbia.logger, kumbia.utils, kumbia.acl, smarty.main, ziplib.main<br />
Listo, ahora cuando inicie Kumbia esta librería estará disponible en cualquier parte de nuestra aplicación.<br />
<br />
=Resumen=<br />
<br />
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.</div>132.248.102.230https://wiki.kumbiaphp.com/index.php?title=Instalar_Kumbia&diff=299Instalar Kumbia2009-03-19T16:19:17Z<p>132.248.102.230: /* Configuración de PHP */</p>
<hr />
<div>= Requisitos =<br />
Servidor web Apache en cualquier versión bajo Windows 2000/XP/Vista ó Linux/UNIX.<br />
<br />
Puedes utilizar IIS con Isapi_Rewrite instalado.<br />
<br />
También se puede utilizar Cherokee Web server<br />
<br />
Instalar PHP5+ (recomendado 5.2)<br />
Motor de base de datos soportado si se necesitase. <br />
<br />
= Descargar Kumbia =<br />
<br />
Kumbia se distribuye en un paquete comprimido listo para usar. Se puede descargar la última versión de:<br />
<br />
http://www.kumbiaphp.com/<br />
http://sourceforge.net/projects/kumbia/<br />
<br />
El nombre del paquete tiene un nombre como kumbia-version-notes.formato, por ejemplo: kumbia-0.4.7a-stable.tar.gz<br />
<br />
= Configuración de módulos ( apache, php y bbdd ) =<br />
<br />
== Configurando apache ==<br />
<br />
Kumbia utiliza un módulo llamado mod_rewrite para la reescritura de URLs y hacerlas más comprensibles y fáciles de recordar en nuestras aplicaciones. Por esto, el módulo debe ser configurado e instalado en Apache. Para esto, debe chequear que el módulo esté habilitado en el httpd.conf <br />
<br />
<source lang="php"><br />
<Directory "/to/document/root"><br />
Options Indexes FollowSymLinks<br />
AllowOverride All<br />
Order allow,deny<br />
Allow from all<br />
</Directory> <br />
</source><br />
<br />
En el DocumentRoot (Directorio Raíz de Apache) debe llevar la opción '''AllowOverride All''' para que Apache lea el archivo .htaccess y llame a mod_rewrite <br />
<br />
<source lang="php"><br />
AccessFileName .htaccess<br />
LoadModule rewrite_module modules/mod_rewrite.so <br />
</source><br />
<br />
Sirven para indicar que el archivo de configuración se llama .htaccess y que suba el módulo mod_rewrite, esta última línea generalmente aparece con un signo # de comentario. <br />
<br />
<source lang="php"><br />
DirectoryIndex index.php index.html ...<br />
</source><br />
<br />
Indican a Apache que index.php es un archivo de índice que tiene prioridad sobre index.html, es muy importante que index.php esté antes de index.html. <br />
<br />
<br />
=== ¿Por qué es importante Mod-Rewrite? ===<br />
<br />
ReWrite es un módulo de apache que permite reescribir las urls que han utilizado nuestros usuarios a otras más complicadas para ellos. Kumbia encapsula esta complejidad permitiéndonos usar URLS bonitas o limpias como las que vemos en blogs o en muchos sitios donde no aparecen los ? ó los & o las extensiones del servidor (.php, .asp, .aspx, etc). <br />
<br />
Además de esto, con mod-rewrite, kumbia puede proteger nuestras aplicaciones ante la posibilidad de que los usuarios puedan ver los directorios del proyecto y puedan acceder a archivos de clases, modelos, lógica, etc, sin que sean autorizados. <br />
<br />
Con mod-rewrite el único directorio que pueden ver los usuarios es el contenido del directorio public, el resto permanece oculto y sólo puede ser visualizado cuando ha realizado una petición en forma correcta y también es correcto según nuestra lógica de aplicación.<br />
Cuando escribes direcciones utilizando este tipo de URLs, estás ayudando también a los motores de búsqueda a indexar mejor tu información.<br />
<br />
'''NOTA:''' Se trabaja actualmente para que este requisito no sea indispensable, se estima que esta mejora será incorporada en la versión 0.6 del framework, de manera que se pueda utilizar el framework en servidores compartidos o en aquellos hosting que no ofrecen este módulo de apache<br />
<br />
== Configuración de PHP ==<br />
<br />
Las siguientes configuraciones de PHP son opcionales:<br />
<br />
magic_quotes_gpc = On <br />
<br />
Nos protegen en cierta medida de ataques de inyección SQL que puedan tratar de ejecutar sobre nuestras aplicaciones en Kumbia. <br />
<br />
error_reporting = E_ALL & ~E_NOTICE <br />
<br />
Kumbia no está escrito respetando el estándar E_STRICT, por lo que en algunas configuraciones podrían aparecer mensajes inesperados o molestos de parte de PHP. <br />
<br />
session.save_path = /path/to/dir/ <br />
<br />
Debe apuntar a un directorio con permisos de escritura <br />
<br />
track_errors = On <br />
<br />
Permite que Kumbia muestre información más precisa sobre algunos warnings y mensajes de error que son controlados internamente. <br />
<br />
=== ¿Porque Kumbia utiliza PHP5? ===<br />
<br />
Kumbia trabaja sólo con PHP5. PHP5 es la versión más avanzada, estable y es el futuro de este lenguaje. Posee un soporte más completo a la orientación a objetos, iteradores, excepciones y un soporte a xml más potente. <br />
<br />
Usuarios que quieran dar un toque realmente profesional a sus aplicaciones sabrán valorar las cualidades de PHP5 y abandonarán el uso de PHP4. Alguna vez se pensó en desarrollar una versión especifica de Kumbia para PHP4, sin embargo esto era dar un paso atrás.<br />
<br />
Hoy en día, el mayor problema que tiene PHP5 es el paso a servidores de hosting compartido con esta versión, que hoy en día mantienen compatibilidad con PHP4, ya que el cambio generaría problemas con aplicaciones existentes en ellas. Pero esto poco a poco se deja atrás y cada vez más servidores tienen la ultima versión de PHP.<br />
<br />
== Configurando BB.DD == <br />
<br />
=== Configuración de MySQL ===<br />
<br />
Cuando se utiliza una base de datos MYSQL5 debe verificarse que el sql_mode no esté en modilidad estricta. Para validar esto debe ingresar a la línea de comando de MYSQL5: <br />
<br />
mysql -h localhost -u root -p<br />
<br />
y luego ejecutar el siguiente select:<br />
<br />
mysql> select @@global.sql_mode;<br />
<br />
Dependiendo de la configuración que tenga le dará un resultado parecido a esto: <br />
<br />
<source lang="php"><br />
+----------------------------------------------- +<br />
| @@global.sql_mode |<br />
+----------------------------------------------- +<br />
| STRICT_ALL_TABLES |<br />
+----------------------------------------------- +<br />
</source><br />
<br />
Para cambiar este parámetro, a uno adecuado al framework, debe ejecutar el siguiente comando: <br />
<br />
mysql> set [global | session] sql_mode = ;<br />
<br />
o cambiar la configuración del archivo my.ini en su sistema operativo. <br />
<br />
Para ver otros parámetros ver el siguiente enlace [1]<br />
<br />
=== Configurando Oracle ===<br />
<br />
Kumbia trabaja con la extensión de PHP OCI8. Estas funciones le permiten acceder a bases de datos Oracle 10, Oracle 9, Oracle 8 y Oracle 7 usando la Interfaz de Llamados Oracle (OCI por sus siglas en Inglés). Ellas soportan la vinculación de variables PHP a recipientes Oracle, tienen soporte completo LOB, FILE y ROWID, y le permiten usar variables de definición entregadas por el usuario. <br />
<br />
Para que OCI8 trabaje es necesario instalar el cliente instantáneo de oracle. <br />
Luego hay que agregar a la variable de entorno PATH del sistema la ruta a donde fue descomprimido el cliente instantáneo. <br />
<br />
PATH=%PATH%;<br />
c:\instantclient10_2\ <br />
<br />
Reiniciar Apache <br />
<br />
Advertencia: En Oracle la funcionalidad limit podría no funcionar como se espera. Utilice la condición rownum < numero_filas para hacer esto.<br />
<br />
= Configurar XAMPP =<br />
<br />
== Instalando XAMPP bajo Windows ==<br />
<br />
El procedimiento para instalar XAMPP en Windows es el siguiente: <br />
<br />
#Descargar XAMPP de Apache Friends<br />
#Instalar XAMPP <br />
#Habitilitar Instalar Apache y MySQL como Servicio <br />
#Editar el archivo c:\Archivos de Programa\xampp\apache\conf\httpd.conf <br />
#Descomentar (quitar el #) de la línea donde dice:<br />
##LoadModule rewrite_module modules/mod_rewrite.so <br />
#Reiniciar el servicio de Apache desde el Panel de Control de XAMPP <br />
#Copiar el paquete de Kumbia a:<br />
##c:\Archivos de Programa\xampp\apache\htdocs\<br />
#Continuar Normalmente <br />
<br />
== Instalando XAMPP bajo GNU/Linux ==<br />
<br />
El procedimiento para instalar XAMPP en cualquier distribución GNU/Linux es el siguiente: <br />
<br />
#Descargar XAMPP de Apache Friends<br />
#Instalar XAMPP <br />
#Copiar el paquete de Kumbia a /opt/lampp/htdocs/ <br />
#Continuar la instalación normalmente <br />
<br />
Instalando XAMPP bajo Debian/Ubuntu Linux<br />
Instala Apache2+MySQL5+PHP5 si no lo tienes instalado usando la guia en este blog o en Ubuntu-es. <br />
En Debian/Ubuntu tienes que usar el comando para habilitar mod_rewrite en Apache: <br />
# a2enmod rewrite<br />
<br />
y luego en editas el archivo: <br />
<br />
/etc/apache2/sites-enabled/000-default<br />
<br />
Buscas la línea para el directorio /var/www donde dice: AllowOverride None y cambiar por AllowOverride All <br />
<br />
Reinicias Apache con: <br />
<br />
# # /etc/init.d/apache2 restart<br />
<br />
Continuar normalmente <br />
<br />
Verificar la instalación de Kumbia<br />
<br />
La verificación del buen funcionamiento de Kumbia y la instalación realizada es muy simple. Debéis abrir el navegador web ( explorer, firefox, opera ) y escribir: <br />
<br />
http://localhost/<directorio_paquete_kumbia>/<br />
<br />
<directorio_paquete_kumbia> lo debéis substituir por la carpeta donde habéis descomprimido el paquete.<br />
<br />
Si todo esta correcto os mostrará una pantalla de bienvenida, en caso contrario os informará sobre error o errores detectados.</div>132.248.102.230