SlideShare ist ein Scribd-Unternehmen logo
1 von 45
Introducción a Kohana Framework Jorge Iván Meza Martínez [email_address] http://www.jorgeivanmeza.com/
Contenido ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
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 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Características ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Instalación ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Directorios ,[object Object],[object Object],[object Object],[object Object],[object Object]
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 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
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 ,[object Object],[object Object],[object Object],[object Object],[object Object]
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 ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Módulos del  framework ,[object Object],[object Object],[object Object]
Librerías del  framework ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Ayudantes del  framework . ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
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)

Weitere ähnliche Inhalte

Was ist angesagt?

Develop advance joomla! MVC Component for version 3
Develop advance joomla! MVC Component for version 3Develop advance joomla! MVC Component for version 3
Develop advance joomla! MVC Component for version 3Gunjan Patel
 
The New JavaScript: ES6
The New JavaScript: ES6The New JavaScript: ES6
The New JavaScript: ES6Rob Eisenberg
 
Introduction to Javascript
Introduction to JavascriptIntroduction to Javascript
Introduction to JavascriptSeble Nigussie
 
Using Chrome Dev Tools
Using Chrome Dev ToolsUsing Chrome Dev Tools
Using Chrome Dev ToolsMicah Wood
 
Intro to the Salesforce Command Line Interface for Admins
Intro to the Salesforce Command Line Interface for AdminsIntro to the Salesforce Command Line Interface for Admins
Intro to the Salesforce Command Line Interface for AdminsSalesforce Admins
 
Redirecciones / Tuberias / Comandos básicos
Redirecciones / Tuberias / Comandos básicosRedirecciones / Tuberias / Comandos básicos
Redirecciones / Tuberias / Comandos básicosPablo Macon
 
Django for Beginners
Django for BeginnersDjango for Beginners
Django for BeginnersJason Davies
 
1. introduction to html5
1. introduction to html51. introduction to html5
1. introduction to html5JayjZens
 
Dom html - java script
Dom   html - java scriptDom   html - java script
Dom html - java scriptDaniel Grippo
 
How to Make HTML and CSS Files
How to Make HTML and CSS FilesHow to Make HTML and CSS Files
How to Make HTML and CSS FilesLearningNerd
 
Bootstrap 5 whats new
Bootstrap 5   whats newBootstrap 5   whats new
Bootstrap 5 whats newSandun Perera
 
Building Real-Time Applications with Android and WebSockets
Building Real-Time Applications with Android and WebSocketsBuilding Real-Time Applications with Android and WebSockets
Building Real-Time Applications with Android and WebSocketsSergi Almar i Graupera
 
Html phrase tags
Html phrase tagsHtml phrase tags
Html phrase tagseShikshak
 
Introduction to HTML5
Introduction to HTML5Introduction to HTML5
Introduction to HTML5IT Geeks
 

Was ist angesagt? (20)

Develop advance joomla! MVC Component for version 3
Develop advance joomla! MVC Component for version 3Develop advance joomla! MVC Component for version 3
Develop advance joomla! MVC Component for version 3
 
Javascript
JavascriptJavascript
Javascript
 
The New JavaScript: ES6
The New JavaScript: ES6The New JavaScript: ES6
The New JavaScript: ES6
 
Introduction to Javascript
Introduction to JavascriptIntroduction to Javascript
Introduction to Javascript
 
Using Chrome Dev Tools
Using Chrome Dev ToolsUsing Chrome Dev Tools
Using Chrome Dev Tools
 
Intro to the Salesforce Command Line Interface for Admins
Intro to the Salesforce Command Line Interface for AdminsIntro to the Salesforce Command Line Interface for Admins
Intro to the Salesforce Command Line Interface for Admins
 
Redirecciones / Tuberias / Comandos básicos
Redirecciones / Tuberias / Comandos básicosRedirecciones / Tuberias / Comandos básicos
Redirecciones / Tuberias / Comandos básicos
 
Django for Beginners
Django for BeginnersDjango for Beginners
Django for Beginners
 
React
React React
React
 
Html
HtmlHtml
Html
 
1. introduction to html5
1. introduction to html51. introduction to html5
1. introduction to html5
 
Dom html - java script
Dom   html - java scriptDom   html - java script
Dom html - java script
 
Spring boot
Spring bootSpring boot
Spring boot
 
How to Make HTML and CSS Files
How to Make HTML and CSS FilesHow to Make HTML and CSS Files
How to Make HTML and CSS Files
 
Bootstrap 5 whats new
Bootstrap 5   whats newBootstrap 5   whats new
Bootstrap 5 whats new
 
Building Real-Time Applications with Android and WebSockets
Building Real-Time Applications with Android and WebSocketsBuilding Real-Time Applications with Android and WebSockets
Building Real-Time Applications with Android and WebSockets
 
Html phrase tags
Html phrase tagsHtml phrase tags
Html phrase tags
 
Gatsby intro
Gatsby introGatsby intro
Gatsby intro
 
HTML5
HTML5HTML5
HTML5
 
Introduction to HTML5
Introduction to HTML5Introduction to HTML5
Introduction to HTML5
 

Andere mochten auch

Kohana 3.2 documentation
Kohana 3.2 documentationKohana 3.2 documentation
Kohana 3.2 documentationdmthuan1
 
Yupp PHP Framework
Yupp PHP FrameworkYupp PHP Framework
Yupp PHP FrameworkPablo Pazos
 
Desarrollo Web con Kohana Framework PHP
Desarrollo Web con Kohana Framework PHPDesarrollo Web con Kohana Framework PHP
Desarrollo Web con Kohana Framework PHPJavier López López
 
Buenas prácticas para el desarrollo Web
Buenas prácticas para el desarrollo WebBuenas prácticas para el desarrollo Web
Buenas prácticas para el desarrollo Webgueste60889d
 
The Sustainable Development Framework
The Sustainable Development FrameworkThe Sustainable Development Framework
The Sustainable Development FrameworkUNDP Eurasia
 
AngularJS 1 - A Superheroic Javascript MVC framework (Spanish)
AngularJS 1 - A Superheroic Javascript MVC framework (Spanish)AngularJS 1 - A Superheroic Javascript MVC framework (Spanish)
AngularJS 1 - A Superheroic Javascript MVC framework (Spanish)Nacho García Fernández
 
Sustainability frameworks
Sustainability frameworksSustainability frameworks
Sustainability frameworksBruce Starcher
 
Four steps to sustainability as a strategic asset
Four steps to sustainability as a strategic assetFour steps to sustainability as a strategic asset
Four steps to sustainability as a strategic assetAnton Breman
 
Curso Básico de AngularJS
Curso Básico de AngularJSCurso Básico de AngularJS
Curso Básico de AngularJSCarlos Azaustre
 
Patron de Desarrollo Modelo Vista Controlador
Patron de Desarrollo Modelo Vista ControladorPatron de Desarrollo Modelo Vista Controlador
Patron de Desarrollo Modelo Vista ControladorHenry Vargas
 
144 Rest Web Services
144 Rest Web Services144 Rest Web Services
144 Rest Web ServicesGeneXus
 
Introducción a Laravel 5 - Un Framework para Artesanos Web
Introducción a Laravel 5 - Un Framework para Artesanos WebIntroducción a Laravel 5 - Un Framework para Artesanos Web
Introducción a Laravel 5 - Un Framework para Artesanos WebFacundo E. Goñi Perez
 
Developing Java Web Applications
Developing Java Web ApplicationsDeveloping Java Web Applications
Developing Java Web Applicationshchen1
 
Calculadora Gráfica Java implementando el Patrón MVC
Calculadora Gráfica Java implementando el Patrón MVCCalculadora Gráfica Java implementando el Patrón MVC
Calculadora Gráfica Java implementando el Patrón MVCIgnacio Aular Reyes
 
Sustainability: Ecology & Economy // Snapshot Series
Sustainability: Ecology & Economy // Snapshot Series Sustainability: Ecology & Economy // Snapshot Series
Sustainability: Ecology & Economy // Snapshot Series LHBS
 

Andere mochten auch (20)

Kohana 3.2 documentation
Kohana 3.2 documentationKohana 3.2 documentation
Kohana 3.2 documentation
 
Yupp PHP Framework
Yupp PHP FrameworkYupp PHP Framework
Yupp PHP Framework
 
Desarrollo Web con Kohana Framework PHP
Desarrollo Web con Kohana Framework PHPDesarrollo Web con Kohana Framework PHP
Desarrollo Web con Kohana Framework PHP
 
Buenas prácticas para el desarrollo Web
Buenas prácticas para el desarrollo WebBuenas prácticas para el desarrollo Web
Buenas prácticas para el desarrollo Web
 
Sustainability Roadmap
Sustainability RoadmapSustainability Roadmap
Sustainability Roadmap
 
The Sustainable Development Framework
The Sustainable Development FrameworkThe Sustainable Development Framework
The Sustainable Development Framework
 
Angular Conceptos Practicos 1
Angular Conceptos Practicos 1Angular Conceptos Practicos 1
Angular Conceptos Practicos 1
 
Introducción a Angular JS
Introducción a Angular JSIntroducción a Angular JS
Introducción a Angular JS
 
AngularJS 1 - A Superheroic Javascript MVC framework (Spanish)
AngularJS 1 - A Superheroic Javascript MVC framework (Spanish)AngularJS 1 - A Superheroic Javascript MVC framework (Spanish)
AngularJS 1 - A Superheroic Javascript MVC framework (Spanish)
 
Sustainability frameworks
Sustainability frameworksSustainability frameworks
Sustainability frameworks
 
Four steps to sustainability as a strategic asset
Four steps to sustainability as a strategic assetFour steps to sustainability as a strategic asset
Four steps to sustainability as a strategic asset
 
Curso Básico de AngularJS
Curso Básico de AngularJSCurso Básico de AngularJS
Curso Básico de AngularJS
 
Patron de Desarrollo Modelo Vista Controlador
Patron de Desarrollo Modelo Vista ControladorPatron de Desarrollo Modelo Vista Controlador
Patron de Desarrollo Modelo Vista Controlador
 
144 Rest Web Services
144 Rest Web Services144 Rest Web Services
144 Rest Web Services
 
Introducción a Laravel 5 - Un Framework para Artesanos Web
Introducción a Laravel 5 - Un Framework para Artesanos WebIntroducción a Laravel 5 - Un Framework para Artesanos Web
Introducción a Laravel 5 - Un Framework para Artesanos Web
 
Developing Java Web Applications
Developing Java Web ApplicationsDeveloping Java Web Applications
Developing Java Web Applications
 
Calculadora Gráfica Java implementando el Patrón MVC
Calculadora Gráfica Java implementando el Patrón MVCCalculadora Gráfica Java implementando el Patrón MVC
Calculadora Gráfica Java implementando el Patrón MVC
 
MVC: La Vista
MVC: La VistaMVC: La Vista
MVC: La Vista
 
Sustainability: Ecology & Economy // Snapshot Series
Sustainability: Ecology & Economy // Snapshot Series Sustainability: Ecology & Economy // Snapshot Series
Sustainability: Ecology & Economy // Snapshot Series
 
CRUD html php mysql
CRUD html php mysqlCRUD html php mysql
CRUD html php mysql
 

Ähnlich wie Introducción a Kohana Framework

Framework kahana
Framework kahanaFramework kahana
Framework kahanaH31D1
 
Desarrollo Aplicaciones Zend Framework
Desarrollo Aplicaciones Zend FrameworkDesarrollo Aplicaciones Zend Framework
Desarrollo Aplicaciones Zend Frameworkricsoc
 
Exposicion Akelos
Exposicion AkelosExposicion Akelos
Exposicion Akelosdokeosla
 
Tutorial de cakePHP itst
Tutorial de cakePHP itstTutorial de cakePHP itst
Tutorial de cakePHP itstomicx
 
Introduccion, Instalacion, Configuracion e Implementacion Framework ZanPHP IT...
Introduccion, Instalacion, Configuracion e Implementacion Framework ZanPHP IT...Introduccion, Instalacion, Configuracion e Implementacion Framework ZanPHP IT...
Introduccion, Instalacion, Configuracion e Implementacion Framework ZanPHP IT...JaenFrankcezco
 
Desarrollo de Apps Web en Ruby on Rails
Desarrollo de Apps Web en Ruby on RailsDesarrollo de Apps Web en Ruby on Rails
Desarrollo de Apps Web en Ruby on RailsFreelancer
 
PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf
PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdfPHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf
PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdfRaaulroodriguez
 
Framework 02
Framework 02Framework 02
Framework 02ronnyme21
 
Desarrollo de sistios web
Desarrollo de sistios webDesarrollo de sistios web
Desarrollo de sistios webesmartcrimt
 
PHP Tema 7 - Seguridad
PHP Tema 7 - SeguridadPHP Tema 7 - Seguridad
PHP Tema 7 - SeguridadSpacetoshare
 
Programa en Rails como si Jugases con Lego. Javier Ramirez
Programa en Rails como si Jugases con Lego. Javier RamirezPrograma en Rails como si Jugases con Lego. Javier Ramirez
Programa en Rails como si Jugases con Lego. Javier Ramirezjavier ramirez
 
Javier Ramirez Rails Plugins Pdf
Javier Ramirez Rails Plugins PdfJavier Ramirez Rails Plugins Pdf
Javier Ramirez Rails Plugins Pdfjavier ramirez
 
Rails Plugins. Javier Ramirez
Rails Plugins. Javier RamirezRails Plugins. Javier Ramirez
Rails Plugins. Javier Ramirezjavier ramirez
 
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...Corporacion de Industrias Tecnologicas S.A.
 
Presentación de zan php
Presentación de zan phpPresentación de zan php
Presentación de zan phpCarlos Zantana
 
Tutorial MVC - Zenphp - Programador PHP
Tutorial MVC - Zenphp - Programador PHPTutorial MVC - Zenphp - Programador PHP
Tutorial MVC - Zenphp - Programador PHPJuan Belón Pérez
 

Ähnlich wie Introducción a Kohana Framework (20)

Framework kahana
Framework kahanaFramework kahana
Framework kahana
 
Desarrollo Aplicaciones Zend Framework
Desarrollo Aplicaciones Zend FrameworkDesarrollo Aplicaciones Zend Framework
Desarrollo Aplicaciones Zend Framework
 
nn
nnnn
nn
 
Exposicion Akelos
Exposicion AkelosExposicion Akelos
Exposicion Akelos
 
Tutorial de cakePHP itst
Tutorial de cakePHP itstTutorial de cakePHP itst
Tutorial de cakePHP itst
 
Introduccion, Instalacion, Configuracion e Implementacion Framework ZanPHP IT...
Introduccion, Instalacion, Configuracion e Implementacion Framework ZanPHP IT...Introduccion, Instalacion, Configuracion e Implementacion Framework ZanPHP IT...
Introduccion, Instalacion, Configuracion e Implementacion Framework ZanPHP IT...
 
Desarrollo de Apps Web en Ruby on Rails
Desarrollo de Apps Web en Ruby on RailsDesarrollo de Apps Web en Ruby on Rails
Desarrollo de Apps Web en Ruby on Rails
 
PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf
PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdfPHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf
PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf PHP.pdf
 
Framework 02
Framework 02Framework 02
Framework 02
 
APIREST LARAVEL Y PHP.pptx
APIREST LARAVEL Y PHP.pptxAPIREST LARAVEL Y PHP.pptx
APIREST LARAVEL Y PHP.pptx
 
Aplicación abc. asp net mvc 3
Aplicación abc. asp net mvc 3Aplicación abc. asp net mvc 3
Aplicación abc. asp net mvc 3
 
Desarrollo de sistios web
Desarrollo de sistios webDesarrollo de sistios web
Desarrollo de sistios web
 
Manualcake
ManualcakeManualcake
Manualcake
 
PHP Tema 7 - Seguridad
PHP Tema 7 - SeguridadPHP Tema 7 - Seguridad
PHP Tema 7 - Seguridad
 
Programa en Rails como si Jugases con Lego. Javier Ramirez
Programa en Rails como si Jugases con Lego. Javier RamirezPrograma en Rails como si Jugases con Lego. Javier Ramirez
Programa en Rails como si Jugases con Lego. Javier Ramirez
 
Javier Ramirez Rails Plugins Pdf
Javier Ramirez Rails Plugins PdfJavier Ramirez Rails Plugins Pdf
Javier Ramirez Rails Plugins Pdf
 
Rails Plugins. Javier Ramirez
Rails Plugins. Javier RamirezRails Plugins. Javier Ramirez
Rails Plugins. Javier Ramirez
 
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...
 
Presentación de zan php
Presentación de zan phpPresentación de zan php
Presentación de zan php
 
Tutorial MVC - Zenphp - Programador PHP
Tutorial MVC - Zenphp - Programador PHPTutorial MVC - Zenphp - Programador PHP
Tutorial MVC - Zenphp - Programador PHP
 

Mehr von Jorge Iván Meza Martínez

Presentación grupo de investigación UAM, 201203
Presentación grupo de investigación UAM, 201203Presentación grupo de investigación UAM, 201203
Presentación grupo de investigación UAM, 201203Jorge Iván Meza Martínez
 
Mercadeo en la era de la web 2.0, UniQuindio 20110517
Mercadeo en la era de la web 2.0, UniQuindio 20110517Mercadeo en la era de la web 2.0, UniQuindio 20110517
Mercadeo en la era de la web 2.0, UniQuindio 20110517Jorge Iván Meza Martínez
 
GridUAM, presentación del proyecto - 20110128
GridUAM, presentación del proyecto - 20110128GridUAM, presentación del proyecto - 20110128
GridUAM, presentación del proyecto - 20110128Jorge Iván Meza Martínez
 
Presentación introducción taller cluster 2010/07
Presentación introducción taller cluster 2010/07Presentación introducción taller cluster 2010/07
Presentación introducción taller cluster 2010/07Jorge Iván Meza Martínez
 
Historia breve de un compromiso de seguridad - Instalación de RedHat 8.0
Historia breve de un compromiso de seguridad - Instalación de RedHat 8.0Historia breve de un compromiso de seguridad - Instalación de RedHat 8.0
Historia breve de un compromiso de seguridad - Instalación de RedHat 8.0Jorge Iván Meza Martínez
 
Práctica: distribución de midlets mediante OTA con J2ME - parte I
Práctica: distribución de midlets mediante OTA con J2ME - parte IPráctica: distribución de midlets mediante OTA con J2ME - parte I
Práctica: distribución de midlets mediante OTA con J2ME - parte IJorge Iván Meza Martínez
 
Generación del midlet HolaMundo utilizando EclipseME
Generación del midlet HolaMundo utilizando EclipseMEGeneración del midlet HolaMundo utilizando EclipseME
Generación del midlet HolaMundo utilizando EclipseMEJorge Iván Meza Martínez
 
Generación del midlet HolaMundo utilizando las herramientas de línea de comando
Generación del midlet HolaMundo utilizando las herramientas de línea de comandoGeneración del midlet HolaMundo utilizando las herramientas de línea de comando
Generación del midlet HolaMundo utilizando las herramientas de línea de comandoJorge Iván Meza Martínez
 
Generación del midlet HolaMundo utilizando el JWTK
Generación del midlet HolaMundo utilizando el JWTKGeneración del midlet HolaMundo utilizando el JWTK
Generación del midlet HolaMundo utilizando el JWTKJorge Iván Meza Martínez
 
Introducción al desarrollo de Google Mapplets
Introducción al desarrollo de Google MappletsIntroducción al desarrollo de Google Mapplets
Introducción al desarrollo de Google MappletsJorge Iván Meza Martínez
 

Mehr von Jorge Iván Meza Martínez (18)

Presentación grupo de investigación UAM, 201203
Presentación grupo de investigación UAM, 201203Presentación grupo de investigación UAM, 201203
Presentación grupo de investigación UAM, 201203
 
Presentación GridUAM 201112
Presentación GridUAM 201112Presentación GridUAM 201112
Presentación GridUAM 201112
 
Mercadeo en la era de la web 2.0, UniQuindio 20110517
Mercadeo en la era de la web 2.0, UniQuindio 20110517Mercadeo en la era de la web 2.0, UniQuindio 20110517
Mercadeo en la era de la web 2.0, UniQuindio 20110517
 
GridUAM, presentación del proyecto - 20110128
GridUAM, presentación del proyecto - 20110128GridUAM, presentación del proyecto - 20110128
GridUAM, presentación del proyecto - 20110128
 
Charla introducción a processing - 2010/09
Charla introducción a processing - 2010/09Charla introducción a processing - 2010/09
Charla introducción a processing - 2010/09
 
Presentación introducción taller cluster 2010/07
Presentación introducción taller cluster 2010/07Presentación introducción taller cluster 2010/07
Presentación introducción taller cluster 2010/07
 
Historia breve de un compromiso de seguridad - Instalación de RedHat 8.0
Historia breve de un compromiso de seguridad - Instalación de RedHat 8.0Historia breve de un compromiso de seguridad - Instalación de RedHat 8.0
Historia breve de un compromiso de seguridad - Instalación de RedHat 8.0
 
Instalacion Básica De Drupal 6
Instalacion Básica De Drupal 6Instalacion Básica De Drupal 6
Instalacion Básica De Drupal 6
 
Buscador de Talento Amigo - Presentación
Buscador de Talento Amigo - PresentaciónBuscador de Talento Amigo - Presentación
Buscador de Talento Amigo - Presentación
 
Práctica: distribución de midlets mediante OTA con J2ME - parte I
Práctica: distribución de midlets mediante OTA con J2ME - parte IPráctica: distribución de midlets mediante OTA con J2ME - parte I
Práctica: distribución de midlets mediante OTA con J2ME - parte I
 
Generación del midlet HolaMundo utilizando EclipseME
Generación del midlet HolaMundo utilizando EclipseMEGeneración del midlet HolaMundo utilizando EclipseME
Generación del midlet HolaMundo utilizando EclipseME
 
Generación del midlet HolaMundo utilizando las herramientas de línea de comando
Generación del midlet HolaMundo utilizando las herramientas de línea de comandoGeneración del midlet HolaMundo utilizando las herramientas de línea de comando
Generación del midlet HolaMundo utilizando las herramientas de línea de comando
 
Generación del midlet HolaMundo utilizando el JWTK
Generación del midlet HolaMundo utilizando el JWTKGeneración del midlet HolaMundo utilizando el JWTK
Generación del midlet HolaMundo utilizando el JWTK
 
Introducción a la plataforma J2ME
Introducción a la plataforma J2MEIntroducción a la plataforma J2ME
Introducción a la plataforma J2ME
 
Disección del midlet Hola Mundo en J2ME
Disección del midlet Hola Mundo en J2MEDisección del midlet Hola Mundo en J2ME
Disección del midlet Hola Mundo en J2ME
 
Desarrollo de Mi Primer Mapplet
Desarrollo de Mi Primer MappletDesarrollo de Mi Primer Mapplet
Desarrollo de Mi Primer Mapplet
 
Introducción al desarrollo de Google Mapplets
Introducción al desarrollo de Google MappletsIntroducción al desarrollo de Google Mapplets
Introducción al desarrollo de Google Mapplets
 
Midlets con J2ME
Midlets con J2MEMidlets con J2ME
Midlets con J2ME
 

Kürzlich hochgeladen

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativanicho110
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosJhonJairoRodriguezCe
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxFederico Castellari
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxJorgeParada26
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIhmpuellon
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 

Kürzlich hochgeladen (10)

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 

Introducción a Kohana Framework

  • 1. Introducción a Kohana Framework Jorge Iván Meza Martínez [email_address] http://www.jorgeivanmeza.com/
  • 2.
  • 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.
  • 5.
  • 6.
  • 7.
  • 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.
  • 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. 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. 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. 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. URLs Ejemplo: application/controllers/calculadora.php class Calculadora_controller extends Controller { function __construct() { parent::__construct(); } function sumar($a, $b) { echo ($a + $b); } }
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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.
  • 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. 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. 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. 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.
  • 41.
  • 42.
  • 43.
  • 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. Fin de la presentación. Creative Commons (CC)