1 Introducción a Kohana Framework Jorge Iván Meza Martínez - 1 Introducción a Kohana Framework Jorge Iván Meza Martínez [email protected] http://www.jorgeivanmeza.com/
2 Introducción a Kohana Framework Jorge Iván Meza Martínez - 2 Contenido ● Introducción. ● Características. ● Instalación. ● Directorios. ● Configuración. ● URLs. ● Controladores. ● Librerías. ● Ayudantes. ● Vistas. ● Modelos. ● Eventos. ● Hooks. ● Manejo de errores. ● Módulos. ● Recursos del framework.
3 Introducción a Kohana Framework Jorge Iván Meza Martínez - 3 Introducción KohanaPHPKohanaPHP es un framework liviano y flexible para el desarrollo de aplicaciones web pequeñas y medianas con PHP. Se basa en CodeIgniter al cual complementa con una mejor apropiación de la OO y PHP5, así como un mayor soporte brindado por toda una comunidad.CodeIgniter En esta sesión se expondrán los conceptos del framework necesarios para empezar a diseñar las aplicaciones web, sin embargo no se profundizarán en detalles específicos, se recomienda complementar este documento junto con el wiki de la sección de documentación.wiki
4 Introducción a Kohana Framework Jorge Iván Meza Martínez - 4 Características ● Basado en CodeIgniter. ● Diseño orientado a objetos. ● Requiere PHP5. ● Soportado por una comunidad. ● Acceso a $GET, $POST, $COOKIE y $SESSION. ● Manejo de prefijos para evitar conflictos (simula namespaces). ● Carga automática de clases. ● Consistencia del API al manejar el patrón de controladores (drivers).
5 Introducción a Kohana Framework Jorge Iván Meza Martínez - 5 Características ● Control de eventos del sistema (events y hooks). ● Liviano. ● Seguro. ● Extendible. ● Compatible con UTF-8. ● Desacoplado. ● API coherente. ● Basado en el patrón MVC (Modelo-Vista- Controlador).
6 Introducción a Kohana Framework Jorge Iván Meza Martínez - 6 Instalación ● Descargar el último paquete de la distribución. Descargar ● Descomprimirlo y ubicarlo en el servidor web de destino. El archivo index.php deberá quedar en el directorio raíz del sitio. ● Adapte los archivos de configuración ubicados bajo application/config según sus necesidades. Especialmente la contenida en config.php. ● Permita la escritura (666) en el directorio application/logs. ● Permita la escritura (666) en el directorio application/cache. ● Verifique la instalación visitando la dirección base_url con un navegador web.
7 Introducción a Kohana Framework Jorge Iván Meza Martínez - 7 Directorios Sistema de archivos en cascada. Precedencia: application > modules > system. Excepciones: ● config.php debe estar en application/config. ● Los archivos base ubicados en system/core no son suceptibles de la cascada.
8 Introducción a Kohana Framework Jorge Iván Meza Martínez - 8 Directorios base El primer nivel de directorios separa los siguientes contenidos. /application-archivos relacionados con la aplicación final. /modules-repositorio de módulos. /system-distribución de Kohana. Su contenido no debería modificarse. En su interior incluyen un nivel adicional de directorios descritos a continuación.
9 Introducción a Kohana Framework Jorge Iván Meza Martínez - 9 Directorios base /cache: almacena los archivos para el caché en modo archivo. /config: archivos de configuración. /controllers: controladores. /helpers: clases ayudante. /hooks: procesos asociados a eventos del sistema. /i18n: información de localización. /libraries: librerías. /logs: registro de eventos. /models: modelos. /vendor: liberías de terceros no integradas al framework. /views: vistas.
10 Introducción a Kohana Framework Jorge Iván Meza Martínez - 10 Configuración Comportamiento en cascada análogo al de la búsqueda de archivos entre los directorios: application > modules > system. config.php tendrá que estar ubicado en application/config. Separada entre varios archivos según su finalidad. Cada archivo especifica nuevos índices para el arreglo $config.
11 Introducción a Kohana Framework Jorge Iván Meza Martínez - 11 Configuración Las versiones originales residen en system/config y se puede copiar a las ubicaciones elegidas para sobreescribir sus valores por defecto. cache.php cookie.php database.phphooks.php locale.phplog.php mimes.php pagination.php payment.php profiler.php routes.php session.php upload.php user_agents.php view.php
12 Introducción a Kohana Framework Jorge Iván Meza Martínez - 12 URLs Compuestos por segmentos. Es posible alterar el significado de los segmentos. http://servidor/index.php?/controlador/acción/param1/param2 Con reescritura de URL: http://servidor/controlador/acción/param1/param2
13 Introducción a Kohana Framework Jorge Iván Meza Martínez - 13 URLs La solicitud del siguiente recurso... http://servidor/calculadora/sumar/5/2 Provoca la invocación del método sumar del controlador calculadora enviándole por parámetro los valores 5 y 2. Si el método no se especifica se invoca al método index(). Si el método solicitado no existe se invoca al método _default().
14 Introducción a Kohana Framework Jorge Iván Meza Martínez - 14 URLs Ejemplo: application/controllers/calculadora.php class Calculadora_controller extends Controller { function __construct() { parent::__construct(); } function sumar($a, $b) { echo ($a + $b); }
15 Introducción a Kohana Framework Jorge Iván Meza Martínez - 15 Controladores Interactúan entre el modelo y la vista. Reciben la información del requerimiento del usuario para gestionar su procesamiento (modelo) y su presentación (vista). Los nombres (clase/archivo) deben cumplir la siguiente convención. Ubicación: Almacenado bajo un /application/controllers. Archivo: blog.php (en minúsculas) Clase: Blog_Controller (capitalized)
16 Introducción a Kohana Framework Jorge Iván Meza Martínez - 16 Controladores Ejemplo: application/controllers/blog.php class Blog_Controller extends Controller { public function __construct() { parent::__construct(); } public function index() { // Acción por defecto. } public function updateOwner($post_id, $newOwner) { // Acción con parámetros. } private function _internalProc($param) { // Acción interna, no se enrruta. }
17 Introducción a Kohana Framework Jorge Iván Meza Martínez - 17 Controladores: métodos especiales index()-invocado cuando no se especifica ningún controlador en el URL. _remap($method, $data)-si existe, todos los requerimientos al controlador son enviados a él. _default($method, $data)-invocado cuando se solicita una acción inexistente sobre cualquier controlador. Cualquier método de un controlador con el modificador private o cuyo nombre comience por underscore ('_') no será enrrutado, es decir, no será visible como acción.
18 Introducción a Kohana Framework Jorge Iván Meza Martínez - 18 Librerías Amplían la funcionalidad de la plataforma. Son cargadas de manera automática al requerirse su ccreación. $this -> libreria = new Libreria(); Los nombres (clase/archivo) deben cumplir la siguiente convención. Ubicación: Almacenado bajo un /application/libraries. Archivo: libreria.php (en minúsculas) Clase: Libreria_Core (librerías nuevas) Libreria (especialización de librerías)
19 Introducción a Kohana Framework Jorge Iván Meza Martínez - 19 Librerías: de terceros Ubicadas en application/vendors. Se cargan al framework de la siguiente manera. Kohana::find_file('vendors', 'nombre_libreria') Alternativamente se puede utilizar la sintáxis legada. $this -> load -> library ('nombre_libreria');
20 Introducción a Kohana Framework Jorge Iván Meza Martínez - 20 Ayudantes Son clases con métodos estáticos para realizar tareas muy específicas. Son cargados de manera automática. ayudante::metodo() Los nombres (clase/archivo) deben cumplir la siguiente convención. Ubicación: Almacenado bajo un application/helpers. Archivo: ayudante.php (en minúsculas) Clase: ayudante_Core (ayudantes nuevos) ayudante (especialización de ayudantes)
21 Introducción a Kohana Framework Jorge Iván Meza Martínez - 21 Vistas Son las encargadas de generar el nivel de presentación: XHTML, CSS, JavaScript, XML, JSON, Ajax, etc. Son archivos PHP que contienen la lógica de la presentación. Se ubican en application/views.
22 Introducción a Kohana Framework Jorge Iván Meza Martínez - 22 Vistas: carga Existen tres métodos. Objetos. $v = new View('nombre_vista'); Fábrica: permite el encadenamiento de mensajes. $v = View::factory('nombre_vista'); Cargador: obsoleto. $v = $this -> load -> view('nombre_vista');
23 Introducción a Kohana Framework Jorge Iván Meza Martínez - 23 Vistas: paso de información Sección de código de un controlador. // Crea la referencia a la vista. $v = new View('vista'); // Establece la información de la vista. $v -> titulo = “Introducción a Kohana”; $v -> contenido = “Resúmen práctico”; $v -> fecha = “Desarrollado en 2008”; // Envía el contenido de la vista al usuario. $v -> render(true);
24 Introducción a Kohana Framework Jorge Iván Meza Martínez - 24 Vistas: paso de información Sección de código de una vista.
25 Introducción a Kohana Framework Jorge Iván Meza Martínez - 25 Vistas: paso de información También es posible pasar arreglos de variables a la vista. $items = array( array( 'nombre' => 'elemento 1', 'valor' => '1' ), array( 'nombre' => 'elemento 2', 'valor' => '2' ) ); $v -> set('productos', $items);
26 Introducción a Kohana Framework Jorge Iván Meza Martínez - 26 Vistas: composición Sección de código de un controlador. // Establece la información de la vista. $v -> titulo = “Introducción a Kohana”; $v -> contenido = new View('vista_contenido'); $v -> fecha = “Desarrollado en 2008”; $v -> contenido -> nombres = “Kohana”; $v -> contenido -> apellidos = “Framework”; // Envía el contenido de la vista al usuario. $v -> render(true);
27 Introducción a Kohana Framework Jorge Iván Meza Martínez - 27 Modelos Representan los datos y modelan la lógica del negocio. Desde el framework no es obligatoria su utilización. Los nombres (clase/archivo) deben cumplir la siguiente convención. Ubicación: Almacenado bajo application/models. Archivo: usuario.php (en minúsculas y singular) Clase: Usuario_Model (capitalized y singular)
28 Introducción a Kohana Framework Jorge Iván Meza Martínez - 28 Modelos class Usuario_Model extends Model { private $nombreUsuario; private $contrasena; private $direccionCorreo; public function __construct($id = null) { parent::__construct($id); } public function obtener($id) {... } public function actualizar() {... } public function remover() {... } }
29 Introducción a Kohana Framework Jorge Iván Meza Martínez - 29 Modelos: carga Para el ámbito local. $usuario = new Usuario_Model(); $usuario -> obtener('123'); Para el ámbito del controlador. $this -> usuario = new Usuario_Model(); $this -> usuario -> obtener('123');
30 Introducción a Kohana Framework Jorge Iván Meza Martínez - 30 Eventos Son sucesos ocurridos durante la ejecución en el tiempo del sistema. Pueden ser internos (system.*) o creados por el usuario. system.ready-hooks recién cargados. Primer evento del sistema. system.routing-se procesa el URL y se realiza su enrrutamiento. system.execute-se localiza e inicia el controlador.
31 Introducción a Kohana Framework Jorge Iván Meza Martínez - 31 Eventos system.post_routing-se finaliza el enrrutamiento y se genera un 404 en caso de fallar. system.404-no se encontró una página. system.pre_controller -controlador es cargado pero no se ha ejecutado aún. syste m.post_controller_constructor -se invocó el constructor del controlador pero no sus métodos. system. post_controller -controlador creado y vistas cargadas.
32 Introducción a Kohana Framework Jorge Iván Meza Martínez - 32 Eventos system.send_headers-buffer de salida cerrado, antes de desplegar su contenido. system.send_display-salida desplegada. system.shutdown-último evento en suceder.
33 Introducción a Kohana Framework Jorge Iván Meza Martínez - 33 Hooks Permiten la ejecución de métodos frente al suceso de eventos determinados. Residen en application/hooks. Activar en application/config/hooks.php: $config['enable'] = true; ó $config['enable'] = array('muestra', 'hook2');
34 Introducción a Kohana Framework Jorge Iván Meza Martínez - 34 Hooks Sección de código de un hook: hooks/muestra.php class Muestra { public function informacion() { Event::$data = Event::$data. “Mensaje”; } Event::add('system.display', array('Muestra', 'informacion'));
35 Introducción a Kohana Framework Jorge Iván Meza Martínez - 35 Manejo de errores Se incluyen tres tipos de excepciones basadas en Exception. ● Kohana_Exception. ● Kohana_User_Exception. ● Kohana_404_Exception. La variable display_errors definida en index.php establece si se muestran o no los errores sucedidos al usuario final.
36 Introducción a Kohana Framework Jorge Iván Meza Martínez - 36 Kohana_Exception Requieren del soporte de archivos i18n para la traducción del mensaje. throw new Kohana_Exception ($i18n_lang_key [, mensaje_adicional]);
37 Introducción a Kohana Framework Jorge Iván Meza Martínez - 37 Kohana_User_Exception Similar a la anterior, sin embargo no requieren de soporte de i18n. throw new Kohana_User_Exception ($titulo, $mensaje [, $plantilla]); Ejemplo: throw new Kohana_User_Exception ('Error de conversión', 'No puede utilizarse un número negativo: '. $valorRecibido);
38 Introducción a Kohana Framework Jorge Iván Meza Martínez - 38 Kohana_404_Exception Redirecciona al usuario a un mensaje de 404. throw new Kohana_404_Exception ([$pagina [, $plantilla]]); Ejemplo: throw new Kohana_404_Exception ('División por cero');
39 Introducción a Kohana Framework Jorge Iván Meza Martínez - 39 Módulos Son colecciones de archivos relacionados (ayudantes, librerías, modelos, vistas, etc.) con una funcionalidad específica que pueden ser reutilizados. Su carga no es automática. Modificar en application/config/config.php : $config['modules'] => array( 'modules/modulo_1', 'modules/modulo_2' );
40 Introducción a Kohana Framework Jorge Iván Meza Martínez - 40 Clases del framework ● Benchmark. ● Config. ● Event. ● Kohana. ● Log. ● Utf8. ● View.
41 Introducción a Kohana Framework Jorge Iván Meza Martínez - 41 Módulos del framework ● Auth. ● Forge. ● Media.
42 Introducción a Kohana Framework Jorge Iván Meza Martínez - 42 Librerías del framework ● Archive. ● Cache. ● Calendar. ● Database. ● Encrypt. ● Image. ● Input. ● ORM. ● Pagination. ● Payment. ● Profiler. ● Session. ● URI. ● User Agent. ● Validation.
43 Introducción a Kohana Framework Jorge Iván Meza Martínez - 43 Ayudantes del framework. ● Array. ● Cookie. ● Date. ● Download. ● Email. ● Expires. ● Feed. File. ● HTML. ● Inflector. ● Number. ● Security. ● Text. ● URL. ● Valid.
44 Introducción a Kohana Framework Jorge Iván Meza Martínez - 44 Enlaces de interés Kohana Framework http://www.kohanaphp.com/ Documentación http://docs.kohanaphp.com/ Descargas http://www.kohanaphp.com/download.html Tutoriales http://learn.kohanaphp.com/ Foros http://forum.kohanaphp.com/ CodeIgniter http://www.codeigniter.com/
45 Introducción a Kohana Framework Jorge Iván Meza Martínez - 45 Fin de la presentación. Creative Commons (CC)