Introducción a Kohana Framework Jorge Iván Meza Martínez [email_address] http://www.jorgeivanmeza.com/
Contenido <ul><li>Introducción. </li></ul><ul><li>Características. </li></ul><ul><li>Instalación. </li></ul><ul><li>Direct...
Introducción KohanaPHP  es un  framework  liviano y flexible para el desarrollo de aplicaciones web pequeñas y medianas co...
Características <ul><ul><li>Basado en CodeIgniter. </li></ul></ul><ul><ul><li>Diseño orientado a objetos. </li></ul></ul><...
Características <ul><ul><li>Control de eventos del sistema ( events  y  hooks ). </li></ul></ul><ul><ul><li>Liviano. </li>...
Instalación <ul><ul><li>Descargar  el último paquete de la distribución. </li></ul></ul><ul><ul><li>Descomprimirlo y ubica...
Directorios <ul><li>Sistema de archivos en cascada. </li></ul><ul><li>Precedencia:  application  >  modules  >  system . <...
Directorios base El primer nivel de directorios separa los siguientes contenidos. /application - archivos relacionados con...
Directorios base <ul><ul><li>/cache : almacena los archivos para el caché en modo archivo. </li></ul></ul><ul><ul><li>/con...
Configuración Comportamiento en cascada análogo al de la búsqueda de archivos entre los directorios:  application  >  modu...
Configuración Las versiones originales residen en  system/config  y se puede copiar a las ubicaciones elegidas para sobree...
URLs Compuestos por segmentos. Es posible alterar el significado de los segmentos. http://servidor/ index.php? /controlado...
URLs La solicitud del siguiente recurso ... http://servidor/calculadora/sumar/5/2 Provoca la invocación del  método   suma...
URLs Ejemplo:  application/controllers/calculadora.php class  Calculadora_controller  extends  Controller { function __con...
Controladores Interactúan entre el modelo y la vista.  Reciben la información del requerimiento del usuario para gestionar...
Controladores Ejemplo:  application/controllers/blog.php class Blog_Controller extends Controller { public function __cons...
Controladores: métodos especiales index() - invocado cuando no se especifica ningún controlador en el URL. _remap($method,...
Librerías Amplían la funcionalidad de la plataforma.  Son cargadas de manera automática al requerirse su ccreación. $this ...
Librerías: de terceros Ubicadas en  application/vendors . Se cargan al framework de la siguiente manera. Kohana::find_file...
Ayudantes Son clases con métodos estáticos para realizar tareas muy específicas. Son cargados de manera automática. ayudan...
Vistas Son las encargadas de generar el nivel de presentación: XHTML, CSS, JavaScript, XML, JSON, Ajax, etc. Son archivos ...
Vistas: carga Existen tres métodos. Objetos . $v = new View('nombre_vista'); Fábrica : permite el encadenamiento de mensaj...
Vistas: paso de información Sección de código de un  controlador . // Crea la referencia a la vista. $v = new View('vista'...
Vistas: paso de información Sección de código de una  vista . <html> <head> <title><?php echo $ titulo ; ?></title> </head...
Vistas: paso de información También es posible pasar arreglos de variables a la vista. $ items  = array( array( 'nombre' =...
Vistas: composición Sección de código de un  controlador . // Establece la información de la vista. $v -> titulo = “Introd...
Modelos Representan los datos y modelan la lógica del negocio. Desde el  framework  no es obligatoria su utilización. Los ...
Modelos class  Usuario_Model  extends  Model { private $nombreUsuario; private $contrasena; private $direccionCorreo; publ...
Modelos: carga Para el ámbito local. $usuario = new Usuario_Model(); $usuario -> obtener('123'); Para el ámbito del contro...
Eventos Son sucesos ocurridos durante la ejecución en el tiempo del sistema.  Pueden ser internos ( system.* ) o creados p...
Eventos system.post_routing - se finaliza el enrrutamiento y se  genera un 404 en caso de fallar. system.404 - no se encon...
Eventos system.send_headers - buffer  de salida cerrado, antes de  desplegar su contenido. system.send_display - salida de...
Hooks Permiten la ejecución de métodos frente al suceso de eventos determinados. Residen en  application/hooks . Activar e...
Hooks Sección de código de un  hook :  hooks/muestra.php class  Muestra { public function  informacion () { Event::$data =...
Manejo de errores <ul><li>Se incluyen tres tipos de excepciones basadas en  Exception . </li></ul><ul><ul><li>Kohana_Excep...
Kohana_Exception Requieren del soporte de archivos i18n para la traducción del mensaje. throw new  Kohana_Exception  ($i18...
Kohana_User_Exception Similar a la anterior, sin embargo no requieren de soporte de i18n. throw new  Kohana_User_Exception...
Kohana_404_Exception Redirecciona al usuario a un mensaje de 404. throw new Kohana_404_Exception ([$pagina [, $plantilla]]...
Módulos Son colecciones de archivos relacionados (ayudantes, librerías, modelos, vistas, etc.) con una funcionalidad espec...
Clases del  framework <ul><li>Benchmark. </li></ul><ul><li>Config. </li></ul><ul><li>Event. </li></ul><ul><li>Kohana. </li...
Módulos del  framework <ul><li>Auth. </li></ul><ul><li>Forge. </li></ul><ul><li>Media. </li></ul>
Librerías del  framework <ul><li>Archive. </li></ul><ul><li>Cache. </li></ul><ul><li>Calendar. </li></ul><ul><li>Database....
Ayudantes del  framework . <ul><li>Array. </li></ul><ul><li>Cookie. </li></ul><ul><li>Date. </li></ul><ul><li>Download. </...
Enlaces de interés Kohana Framework http://www.kohanaphp.com/ Documentación http://docs.kohanaphp.com/ Descargas http://ww...
Fin de la presentación. Creative Commons (CC)
Upcoming SlideShare
Loading in...5
×

Introducción a Kohana Framework

7,307

Published on

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.

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
7,307
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
280
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

Introducción a Kohana Framework

  1. 1. Introducción a Kohana Framework Jorge Iván Meza Martínez [email_address] http://www.jorgeivanmeza.com/
  2. 2. Contenido <ul><li>Introducción. </li></ul><ul><li>Características. </li></ul><ul><li>Instalación. </li></ul><ul><li>Directorios. </li></ul><ul><li>Configuración. </li></ul><ul><li>URLs. </li></ul><ul><li>Controladores. </li></ul><ul><li>Librerías. </li></ul><ul><li>Ayudantes. </li></ul><ul><li>Vistas. </li></ul><ul><li>Modelos. </li></ul><ul><li>Eventos. </li></ul><ul><li>Hooks . </li></ul><ul><li>Manejo de errores. </li></ul><ul><li>Módulos. </li></ul><ul><li>Recursos del framework . </li></ul>
  3. 3. Introducción KohanaPHP 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. 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.
  4. 4. Características <ul><ul><li>Basado en CodeIgniter. </li></ul></ul><ul><ul><li>Diseño orientado a objetos. </li></ul></ul><ul><ul><li>Requiere PHP5. </li></ul></ul><ul><ul><li>Soportado por una comunidad. </li></ul></ul><ul><ul><li>Acceso a $GET , $POST , $COOKIE y $SESSION . </li></ul></ul><ul><ul><li>Manejo de prefijos para evitar conflictos (simula namespaces ). </li></ul></ul><ul><ul><li>Carga automática de clases. </li></ul></ul><ul><ul><li>Consistencia del API al manejar el patrón de controladores ( drivers ). </li></ul></ul>
  5. 5. Características <ul><ul><li>Control de eventos del sistema ( events y hooks ). </li></ul></ul><ul><ul><li>Liviano. </li></ul></ul><ul><ul><li>Seguro. </li></ul></ul><ul><ul><li>Extendible. </li></ul></ul><ul><ul><li>Compatible con UTF-8. </li></ul></ul><ul><ul><li>Desacoplado. </li></ul></ul><ul><ul><li>API coherente. </li></ul></ul><ul><ul><li>Basado en el patrón MVC (Modelo-Vista-Controlador). </li></ul></ul>
  6. 6. Instalación <ul><ul><li>Descargar el último paquete de la distribución. </li></ul></ul><ul><ul><li>Descomprimirlo y ubicarlo en el servidor web de destino. El archivo index.php deberá quedar en el directorio raíz del sitio. </li></ul></ul><ul><ul><li>Adapte los archivos de configuración ubicados bajo application/config según sus necesidades. Especialmente la contenida en config.php . </li></ul></ul><ul><ul><li>Permita la escritura ( 666 ) en el directorio application/logs . </li></ul></ul><ul><ul><li>Permita la escritura ( 666 ) en el directorio application/cache . </li></ul></ul><ul><ul><li>Verifique la instalación visitando la dirección base_url con un navegador web. </li></ul></ul>
  7. 7. Directorios <ul><li>Sistema de archivos en cascada. </li></ul><ul><li>Precedencia: application > modules > system . </li></ul><ul><li>Excepciones: </li></ul><ul><ul><li>config.php debe estar en application/config . </li></ul></ul><ul><ul><li>Los archivos base ubicados en system/core no son suceptibles de la cascada. </li></ul></ul>
  8. 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. 9. Directorios base <ul><ul><li>/cache : almacena los archivos para el caché en modo archivo. </li></ul></ul><ul><ul><li>/config : archivos de configuración. </li></ul></ul><ul><ul><li>/controllers : controladores. </li></ul></ul><ul><ul><li>/helpers : clases ayudante. </li></ul></ul><ul><ul><li>/hooks : procesos asociados a eventos del sistema. </li></ul></ul><ul><ul><li>/i18n : información de localización. </li></ul></ul><ul><ul><li>/libraries : librerías. </li></ul></ul><ul><ul><li>/logs : registro de eventos. </li></ul></ul><ul><ul><li>/models : modelos. </li></ul></ul><ul><ul><li>/vendor : liberías de terceros no integradas al framework . </li></ul></ul><ul><ul><li>/views : vistas. </li></ul></ul>
  10. 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. 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.php hooks.php locale.php log.php mimes.php pagination.php payment.php profiler.php routes.php session.php upload.php user_agents.php view.php
  12. 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. 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. 14. URLs Ejemplo: application/controllers/calculadora.php class Calculadora_controller extends Controller { function __construct() { parent::__construct(); } function sumar($a, $b) { echo ($a + $b); } }
  15. 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. 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. 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. 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. 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. 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. 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. 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. 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. 24. Vistas: paso de información Sección de código de una vista . <html> <head> <title><?php echo $ titulo ; ?></title> </head> <body> <h1> <?php echo $ titulo ; ?> </h1> <p> <?php echo $ contenido ; ?> </p> <hr /> <p><?php echo $ fecha ; ?></p> </body> </html>
  25. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 35. Manejo de errores <ul><li>Se incluyen tres tipos de excepciones basadas en Exception . </li></ul><ul><ul><li>Kohana_Exception . </li></ul></ul><ul><ul><li>Kohana_User_Exception . </li></ul></ul><ul><ul><li>Kohana_404_Exception . </li></ul></ul><ul><li>La variable display_errors definida en index.php establece si se muestran o no los errores sucedidos al usuario final. </li></ul>
  36. 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. 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. 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. 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. 40. Clases del framework <ul><li>Benchmark. </li></ul><ul><li>Config. </li></ul><ul><li>Event. </li></ul><ul><li>Kohana. </li></ul><ul><li>Log. </li></ul><ul><li>Utf8. </li></ul><ul><li>View. </li></ul>
  41. 41. Módulos del framework <ul><li>Auth. </li></ul><ul><li>Forge. </li></ul><ul><li>Media. </li></ul>
  42. 42. Librerías del framework <ul><li>Archive. </li></ul><ul><li>Cache. </li></ul><ul><li>Calendar. </li></ul><ul><li>Database. </li></ul><ul><li>Encrypt. </li></ul><ul><li>Image. </li></ul><ul><li>Input. </li></ul><ul><li>ORM. </li></ul><ul><li>Pagination. </li></ul><ul><li>Payment. </li></ul><ul><li>Profiler. </li></ul><ul><li>Session. </li></ul><ul><li>URI. </li></ul><ul><li>User Agent. </li></ul><ul><li>Validation. </li></ul>
  43. 43. Ayudantes del framework . <ul><li>Array. </li></ul><ul><li>Cookie. </li></ul><ul><li>Date. </li></ul><ul><li>Download. </li></ul><ul><li>Email. </li></ul><ul><li>Expires. </li></ul><ul><li>Feed. </li></ul><ul><li>File. </li></ul><ul><li>HTML. </li></ul><ul><li>Inflector. </li></ul><ul><li>Number. </li></ul><ul><li>Security. </li></ul><ul><li>Text. </li></ul><ul><li>URL. </li></ul><ul><li>Valid. </li></ul>
  44. 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. 45. Fin de la presentación. Creative Commons (CC)
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×