Introducción a Kohana Framework

20 %
80 %
Information about Introducción a Kohana Framework

Published on July 26, 2008

Author: jimezam

Source: slideshare.net

Description

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 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.

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 ).

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).

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.

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.

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.

/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.

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.

Benchmark.

Config.

Event.

Kohana.

Log.

Utf8.

View.

Módulos del framework Auth. Forge. Media.

Auth.

Forge.

Media.

Librerías del framework Archive. Cache. Calendar. Database. Encrypt. Image. Input. ORM. Pagination. Payment. Profiler. Session. URI. User Agent. Validation.

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.

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)

Add a comment

Related presentations

Related pages

Introducción a Kohana Framework - Technology

Introducción a Kohana Framework Jun 15, 2015 Technology jorge-ivan-meza-martinez
Read more

Kohana - Tutorial: Introducción | PHP SOLID : Desarrollo ...

Kohana es un Framework, desarrollado en PHP5 para aplicaciones Web, utilizando el patrón Modelo Vista Controlador Jerárquico (HMVC) y se caracteriza por ...
Read more

Introducción a Kohana Framework - Technology

Introducción a Spring Framework El presente trabajo explica aspectos fundamentales de Spring Framework, el más relevante y actual marco de trabajo para ...
Read more

Introducción a Kohana Framework – Jorge Iván Meza Martínez

KohanaPHP es un framework liviano y flexible para el desarrollo de aplicaciones web pequeñas y medianas con PHP. Se basa en ...
Read more

KohanaFramework – Jorge Iván Meza Martínez

Posted on July 25, 2008 Categories Desarrollo de software, WEB Tags CodeIgniter, KohanaFramework, PHP 1 Comment on Introducción a Kohana Framework.
Read more

jQuery4PHP | Tutorials | Jquery4php Y Kohana Framework

Autor: Omar Yepez. Introducción. Este tutorial fue realizado para demostrar la integración de jQuery4PHP con los frameworks mas importantes para PHP.
Read more

Instalando Kohana PHP | Palabras al Cierre

Introducción Antes de comenzar con el post de instalación de Kohana, partamos por lo básico que es Kohana y para que sirve. Kohana toma como base el ...
Read more

Introduccion a kohana ORM - YouTube

Introduccion a kohana ORM ... introducción y caso 1 - Duration: ... Kohana: A Lightweight PHP Framework - Duration: ...
Read more