• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Introducción a Kohana Framework
 

Introducción a Kohana Framework

on

  • 9,269 views

Introducción. ...

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.

Statistics

Views

Total Views
9,269
Views on SlideShare
8,545
Embed Views
724

Actions

Likes
3
Downloads
264
Comments
0

5 Embeds 724

http://blog.jorgeivanmeza.com 605
http://www.jorgeivanmeza.com 85
http://www.slideshare.net 24
http://redes.asinco.cl 7
http://presentacion.org 3

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Introducción a Kohana Framework Introducción a Kohana Framework Presentation Transcript

    • Introducción a Kohana Framework Jorge Iván Meza Martínez [email_address] http://www.jorgeivanmeza.com/
    • 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 .
    • 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.
    • 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 ).
    • 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).
    • Instalación
        • Descargar el último paquete de la distribución.
        • 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.
    • 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.
    • 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.
    • 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.
    • 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 .
    • 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
    • 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
    • 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() .
    • URLs Ejemplo: application/controllers/calculadora.php class Calculadora_controller extends Controller { function __construct() { parent::__construct(); } function sumar($a, $b) { echo ($a + $b); } }
    • 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 )
    • 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. } }
    • 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.
    • 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)
    • 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');
    • 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)
    • 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 .
    • 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');
    • 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);
    • 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>
    • 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 );
    • 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);
    • 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 )
    • 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() { ... } }
    • 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');
    • 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.
    • 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.
    • Eventos system.send_headers - buffer de salida cerrado, antes de desplegar su contenido. system.send_display - salida desplegada. system.shutdown - último evento en suceder.
    • 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');
    • 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 '));
    • 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.
    • Kohana_Exception Requieren del soporte de archivos i18n para la traducción del mensaje. throw new Kohana_Exception ($i18n_lang_key [, mensaje_adicional]);
    • 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);
    • 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');
    • 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' );
    • Clases del framework
      • Benchmark.
      • Config.
      • Event.
      • Kohana.
      • Log.
      • Utf8.
      • View.
    • Módulos del framework
      • Auth.
      • Forge.
      • Media.
    • Librerías del framework
      • Archive.
      • Cache.
      • Calendar.
      • Database.
      • Encrypt.
      • Image.
      • Input.
      • ORM.
      • Pagination.
      • Payment.
      • Profiler.
      • Session.
      • URI.
      • User Agent.
      • Validation.
    • Ayudantes del framework .
      • Array.
      • Cookie.
      • Date.
      • Download.
      • Email.
      • Expires.
      • Feed.
      • File.
      • HTML.
      • Inflector.
      • Number.
      • Security.
      • Text.
      • URL.
      • Valid.
    • 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/
    • Fin de la presentación. Creative Commons (CC)