Empezando con Kohana
- Oct
- 04
Muchos programadores que quieren iniciarse con Kohana PHP5 Framework se encuentran con el problema de no saber por donde empezar. Es por eso que me he animado a escribir este post, en el que intentare explicar de manera sencilla los pasos básicos para montar un entorno de trabajo basado en este framework.
Lo primero que haremos, como es evidente, es descargar una copia. Desde la pagina de descargas podemos personalizar el paquete según nuestras necesidades. Básicamente permite la inclusión de diferentes módulos, idiomas y librerías de terceros.
Personalmente prefiero utilizar la revisión mas reciente de la versión estable directamente desde el repositorio, en el momento de escribir este articulo es la 2.2.1 y para descargarla basta con ejecutar svn co http://source.kohanaphp.com/tags/2.2.1 kohana desde la terminal.
Independientemente del método que utilicemos para obtener las fuentes, lo principal es conocer la estructura del framework. Dentro del directorio principal nos encontramos con una serie de subdirectorios y ficheros, resumiendo un poco, el contenido del paquete consta de:
- application: directorio que contiene la estructura general de una aplicación, debe de considerarse como una guía de como estructurar nuestra propia aplicación. Por defecto contiene una serie de ficheros php a modo de ejemplo.
- modules: directorio donde se incluyen los módulos utilizados por la aplicación.
- system: incluye todos los scripts del framework.
- index.php: es el único fichero que debería estar visible públicamente, en el configuramos algunos parámetros básicos de la aplicación y también es el que se encarga de procesar todas las peticiones.
Sabiendo esto, pasamos a construir la estructura de la aplicación, copiamos los directorios application, modules y system dentro de cualquier directorio del servidor y el fichero index.php dentro de la ruta publica.

El siguiente paso será configurar los parámetros básicos, comenzamos editando el fichero index.php:
- IN_PRODUCTION: lo primero con lo que nos encontramos es una variable global en la que podemos indicar si estamos en el entorno de desarrollo, es especialmente útil cuando utilizamos varios entornos, puesto que nos permite diferenciar valores de configuración y ejecutar condicionalmente algunas partes del código. Por ejemplo podemos utilizarla para iniciar el profiler en el entorno de desarrollo. Mas adelante trataremos esta variable con mayor profundidad.
- $kohana_application: define la ruta al directorio de la aplicación, en el ejemplo seria '/home/user/kohana/application'
- $kohana_modules: define la ruta al directorio de módulos, en el ejemplo seria '/home/user/kohana/modules'
- $kohana_system: define la ruta al directorio de sistema, en el ejemplo seria '/home/user/kohana/system'
Las tres opciones restantes se refieren al control de errores y la extensión de nuestros scripts, la primera define el nivel de error utilizado en php (error_reporting), la segunda habilita que los errores sean mostrados en el navegador y la tercera es una variable global que indica a kohana la extensión que estamos utilizando en el caso de ser diferente a ‘.php’.
El siguiente fichero de configuración que tenemos que editar se encuentra dentro del directorio de la aplicación, en el ejemplo ‘/home/user/kohana/application/config/config.php’, y como es de suponer en el configuramos variables especificas de esta.
- site_domain: define la urls publica de la aplicación, acepta valores relativos y absolutos.
- site_protocol: fuerza el tipo de protocolo utilizado por la aplicación.
- index_page: el nombre escogido para el script de inicio de la aplicación, por defecto es 'index.php'. También podemos omitir este script de la url mediante htaccess.
- url_suffix: mediante esta opción podemos configurar una extensión que se añadirá a todas las url generadas por el framework.
- internal_cache: activa la cache interna del framework, lo que permite una considerable mejora en los tiempos de ejecución de la aplicación. Acepta valores numéricos que indican el intervalo (en segundos) de regeneración de la cache.
- ouput_compression: activa la compresión gzip en los datos generados.
- global_xss_filtering: activa o desactiva el filtrado xss en los datos recibidos. Acepta un valor true/false o una cadena de texto indicando un sistema de filtrado alternativo (htmlpurifier) al que trae el framework por defecto.
- enable_hooks: activa/desactiva la ejecución de hooks. Un valor true/false actúa de manera global, también acepta un array con los nombres de los hooks activos permitiendo un control mas conciso.
- log_threshold: controla el registro interno del framework.
- display_errors: activa/desactiva la salida de errores.
- render_stats: activa/desactiva el renderizado de estadísticas en los datos generados.
- extension_prefix: prefijo utilizado para nombrar los ficheros que extienden clases internas del framework.
- modules: define los módulos activos. Acepta un array con la ruta real de cada modulo.
Ejemplo de configuración utilizando la variable IN_PRODUCTION:
- $config = array
- (
- 'site_domain' => ((IN_PRODUCTION) ? 'path' : 'domain.tld/path'),
- 'site_protocol' => 'http',
- 'index_page' => 'index.php',
- 'internal_cache' => 1800,
- 'url_suffix' => '',
- 'render_stats' => ! IN_PRODUCTION,
- 'enable_hooks' => TRUE,
- 'log_threshold' => (int) IN_PRODUCTION,
- 'output_compression' => IN_PRODUCTION,
- 'display_errors' => ! IN_PRODUCTION,
- 'global_xss_filtering' => FALSE,
- 'extension_prefix' => 'MY_',
- 'modules' => array
- (
- MODPATH.'auth',
- MODPATH.'gmaps'
- )
- );
Para acabar solo nos queda apuntar con el navegador a la url publica de la aplicación, si todo marcha correctamente podremos ver la pagina de ejemplo de kohana.
Por lo pronto eso es todo, creo que como comienzo es una buena introducción, para un próximo articulo tratare de tocar otros temas de interés sobre el framework.

