Está en la página 1de 29

19/01/12

digitta: Empezando con Kohana, mejor que CodeIgniter?

15diciemb e,2009

Empezando con Kohana, CodeIgniter?

mejor que

He traducido este tutorial de NetTuts+ creado por Cristian Gil sobre el framework PHP Kohana, al igual que hice en su da con el de CodeIgniter. Kohana es un framework de PHP5 que sigue la arquitectura MVC (Modelo-VistaControlador). Hay varias razones por las que deberas elegir Kohana, pero las principales son seguridad, ligereza y simplicidad. En este tutorial, introducir sus caractersticas principales y, con una simple demostracin, mostrar cunto tiempo Kohana puede ahorrarte potencialmente.

Paso 1: Qu es Kohana?

Kohana es un framework de PHP5 que sigue la arquitectura MVC. MVC mantiene separadas la lgica de la presentacin. Esto permite crear un cdigo ms limpio y ahorrar tiempo en la bsqueda de errores. Para los que no estn familiarizados con esta arquitectura: Un modelo representa datos sobre los que la aplicacin opera. Normalmente es una base de datos. Una ista contiene el cdigo de presentacin como HTML, CSS y JavaScript.
digitta.com/2009/12/empezando-con-kohana-mejor-que.html 1/29

19/01/12

digitta: Empezando con Kohana, mejor que CodeIgniter?

Un con rolador interpreta la entrada del usuario y redirige al modelo y/o vista. Kohana era originalmente una escisin de CodeIgniter (CI), que es un producto open source de la empresa EllisLab. Hay muchas similitudes entre CI y Kohana, pero todo el cdigo es nuevo o ha sido completamente reescrito. Tal y como puedes leer en la pgina oficial de Kohana, las caractersticas principales son: Altamente seguro Extremadamente ligero Breve curva de aprendizaje Utiliza el patrn MVC 100% compatible con la codificacin UTF-8 Arquitectura dbilmente acoplada Extremadamente fcil de extender

Paso 2: Descargando Kohana

Empecemos. Visita la pgina oficial de Kohana y haz click sobre la caja verde de la esquina derecha para descargar la ltima versin. Todas las bibliotecas, asistentes y vistas de Kohana estn incluidos en el paquete de descarga por defecto, pero puedes seleccionar mdulos extra, herramientas de terceros, y los lenguajes que desees. Para el propsito de este tutorial, el paquete por defecto ser suficiente. Haz click en "Download Kohana!" para iniciar la descarga.

digitta.com/2009/12/empezando-con-kohana-mejor-que.html

2/29

19/01/12

digitta: Empezando con Kohana, mejor que CodeIgniter?

Paso 3: Instalando Kohana


Una vez que se ha terminado la descarga: 1. Descomprimir el zip 2. Renombrar la carpeta "Kohana_vx.x.x" (x.x.x=nmero de versin) a "kohana" y sbela a la carpeta raz de tu servidor web. 3. Edita el fichero de configuracin global application config config.php de esta forma: $ofg'iedmi' ='oahs/oaa; cni[st_oan] lclotkhn' 4. Si ests usando un sistema unix (linux, MacOSX), las subcarpetas de la instalacin podran haber perdido sus permisos durante la descompresin del zip. Haz un c m da 755 de todas ellas ejecutando f n . - y e d ho id tp e e c m d 7 5 { \ desde la carpeta raz de la instalacin de Kohana. xc ho 5 ; 5. Asegrate de que application logs y application cache no sean de slo lectura. Haz c m da 666 sobre ellas. ho 6. Ahora, apunta el navegador a http://localhost/kohana/ . Automticamente, el framework llamar a i s a l p py comprobar los requerimientos con el ntl.h servidor. Kohana se ejecutar en prcticamente cualquier entorno que cumpla la configuracin mnima: Servidor con soporte de Unicode
digitta.com/2009/12/empezando-con-kohana-mejor-que.html 3/29

19/01/12

digitta: Empezando con Kohana, mejor que CodeIgniter?

PHP con una versin igual o posterior a la 5.2.3 Un servidor HTTP. Sugiero XAMPP, que es una herramienta sencilla todoen-uno para instalar MySQL, PHP y Perl. Una base de datos (MsSQL, MySQL, MySQLi, PostgreSQL, PDOSqlite). Tambin hay extensiones necesarias: PCRE iconv mcrypt SPL Si la instalacin se completa con xito, sers dirigido a esta pgina de prueba:

Si alguna de las pruebas falla, debers corregirla antes de continuar. Si todas las comprobaciones tienen xito, dirgete a la carpeta de Kohana y elimina o renombra el archivo i a l p p Recarga la pgina en el navegador y vers n l.h. una pgina de bienvenida como esta:

digitta.com/2009/12/empezando-con-kohana-mejor-que.html

4/29

19/01/12

digitta: Empezando con Kohana, mejor que CodeIgniter?

Paso 4: Configurando Kohana


Kohana est preparado para funcionar. No se necesita realizar ninguna configuracin. Este framework es genial, no te parece? Vamos a ver un poco de cdigo, sgueme.

Paso 5: El primer proyecto con Kohana


Los tutoriales de programacin tradicionales empiezan con el ejemplo "hello world". Pero yo creo que una aplicacin simple puede dar una idea clara de cmo funciona el framework. Vamos a construir un gestor de colecciones de CDs -- slo como divertida demostracin. Antes de empezar a escribir cdigo es necesaria una introduccin breve a la distribucin de carpetas de Kohana.

digitta.com/2009/12/empezando-con-kohana-mejor-que.html

5/29

19/01/12

digitta: Empezando con Kohana, mejor que CodeIgniter?

Nuestra aplicacin se ubicar en la carpeta application. En esta carpeta hay varias subcarpetas pero slo necesitamos lo siguiente para nuestro proyecto: config guarda los archivos de configuracin codificados como simples arra s estticos. controllers guarda nuestra clase de controladores personalizada models guarda nuestra clase de modelos personalizada views guarda nuestro archivos personalizados escritos en HTML (o cualquier lenguaje de markup o scripts necesarios para mostrar los datos y los controles de interfcie para el usuario) El resto de subcarpetas no se necesitan para este tutorial, por lo que te invito a aprender ms posteriormente sobre ellos en la pgina de Kohana. La carpeta s stem guarda el ncleo de Kohana y herramientas como bibliotecas (librar ), asistentes (helper) y archivos de configuracin predefinidos. En este proyecto vamos a usar algunas bibliotecas y algunos asistentes - buenas herramientas para acelerar tu trabajo. La carpeta assets no pertenece a Kohana por defecto. Yo la he creado para guardar archivos estticos como CSS, JS o imgenes. Despus mostrar como incluirlos en el proyecto.
digitta.com/2009/12/empezando-con-kohana-mejor-que.html 6/29

19/01/12

digitta: Empezando con Kohana, mejor que CodeIgniter?

La carpeta mod les es el lugar donde guardar las colecciones reusables de archivos relacionados que unidos aportan una funcionalidad particular a una aplicacin. El mdulo de autenticacin de usuarios, ofrecido por el equipo Kohana, es un ejemplo de mdulo. sta es una muy breve introduccin al sistema de archivos de Kohana, pero es suficiente para los propsitos de este tutorial. No quiero aburrirte con ms teora.

Paso 6: La base de datos del proyecto


He seleccionado MySQL para mi proyecto, pero recuerda que Kohana soporta igualmente MsSQL, MySQLi, PostgreSQL, o PDOSqlite. Crea una base de datos llamada "cd_collection" o elige el nombre que prefieras, y ejecuta la siguiente SQL mediante phpMyAdmin o cualquier herramienta para administrar la base de datos. 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0

? CET TBE`lus ( RAE AL abm` `d it1)NTNL at_nrmn, i` n(1 O UL uoiceet `ae aca(0 claeuf_i NTNL, nm` rhr5) olt t8bn O UL `uhr aca(0 claeuf_i NTNL, ato` rhr5) olt t8bn O UL `er_d it1)NTNL, gnei` n(1 O UL PIAYKY (i`, RMR E `d) KY`er_d (gnei` E gnei` `er_d) )EGN=noB DFUTCASTuf CLAEuf_i AT NIEInD EAL HRE=t8 OLT=t8bn UO

ISR IT `lus (i` `ae,`uhr,`er_d) NET NO abm` `d, nm` ato` gnei` (,'ie,VnsAdTyn Tms,'oa Bohr' 1) 2 Lns ie n rig ie' Jns rtes, 6, (,'h END' 'h BakEe Pa' 1) 3 Te ..., Te lc yd es, 6, (,'eas' 'mnm,1) 4 Rlpe, Eie' 8, (,'ouet AdMlde' 'nuu' 1, 5 Mnmns n eois, Icbs, ) (,'hilr,'ihe Jcsn,1) 6 Trle' Mcal ako' 6, (,'aki Bak,'CD' 4, 7 Bc n lc' A/C, ) (,'h Dr Sd o teMo' 'ikFod,4, 8 Te ak ie f h on, Pn ly' ) (,'a oto Hl' 'etLa' 4, 9 Bt u f el, Ma of, ) (0 'aktetBy' 'ilnim,1) 1, Bcsre os, Mlenu' 6, (1 'uor' 'lewo Mc,4, 1, Rmus, Fetod a' ) (2 'oeo Oe' 'hnaTan,1) 1, Cm n vr, Sai wi' 6, (3 'e Zpei I' 'e Zpei' 4, 1, Ld epln V, Ld epln, ) (4 'agdLtl Pl' 'lnsMrset' 4, 1, Jge ite il, Aai oiste, ) (5 'g.Ppe'sLnl Hat Cu Bn' 'h Bals 1, St epr' oey ers lb ad, Te ete (6 'aln it Yu,'vln Do' 1) 1, Flig no o' C ie in, 6, (7 'ui Bx,'aihCry,1) 1, Msc o' Mra ae' 6, (8 'oni teUSA' 'rc Srnsen,4; 1, Br n h ..., Bue pigte' ) CET TBE`ers ( RAE AL gne` `d it1)NTNL at_nrmn, i` n(1 O UL uoiceet
7/29

digitta.com/2009/12/empezando-con-kohana-mejor-que.html

19/01/12

digitta: Empezando con Kohana, mejor que CodeIgniter?

3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 3 9 4 0 4 1 4 2 4 3 4 4 4 5 4 6 4 7 4 8 4 9 5 0 5 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 6 0 6 1

`ae aca(0 claeuf_i NTNL, nm` rhr5) olt t8bn O UL PIAYKY (i`, RMR E `d) UIU KY`ae (nm` NQE E nm` `ae) )EGN=noB DFUTCASTuf CLAEuf_i AT NIEInD EAL HRE=t8 OLT=t8bn UO ISR IT `ers (i` `ae)VLE NET NO gne` `d, nm` AUS (,'lentv Rc', 1 Atraie ok) (,'le', 2 Bus) (,'lsia', 3 Cascl) (,'ok) 4 Rc', (,'onr', 5 Cut ) (,'ac', 6 Dne) (,'ok) 7 Fl', (,'ea', 8 Mtl) (,'aain) 9 Hwia', (0 'mot', 1, Iprs) (1 'ni Msc) 1, Ide ui', (2 'a ', 1, J ) (3 'ai', 1, Ltn) (4 'e Ae) 1, Nw g', (5 'pr', 1, Oea) (6 'o', 1, Pp) (7 'ol) 1, Su', (8 'a', 1, Rp) (0 'ontak', 2, Sudrcs) (1 'ol Msc) 2, Wrd ui';

ATRTBE`lus LE AL abm` ADCNTAN `er_ne_eainlcntan`FRI D OSRIT gneitrrltoa_osrit OEG

Como puedes ver, el QL crea dos tablas, lbumes y gneros, y los puebla con algunos datos. La ltima sentencia QL agrega una restriccin para la clave ajena "e ei" gn _d. La estructura de la base de datos es muy simple y no necesita mayor explicacin:

digitta.com/2009/12/empezando-con-kohana-mejor-que.html

8/29

19/01/12

digitta: Empezando con Kohana, mejor que CodeIgniter?

Ahora, debes decirle a Kohana dnde est tu base de datos y cmo acceder a ella. Edita el archivo de configuracin global system config database.php de esta forma: 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 $ofg'eal' =ar cni[dfut] ra ( 'ecmr' bnhak = TU, > RE 'esset pritn' = FLE > AS, 'oncin cneto' = ar > ra ( ' p' t e = ' sl, > m q' 'sr ue' = 'ot, > ro' 'as ps' = 'ot, > ro' 'ot hs' = 'oahs' > lclot, 'ot pr' = FLE > AS, 'okt sce' = FLE > AS, 'aaae = 'dcleto' dtbs' > c_olcin ) , 'hrce_e'= 't8, caatrst > uf' 'al_rf ' = ', tbepei > ' 'bet ojc' = TU, > RE 'ah' cce = FLE > AS, 'sae ecp' = TU > RE ) ;
?

digitta.com/2009/12/empezando-con-kohana-mejor-que.html

9/29

19/01/12

digitta: Empezando con Kohana, mejor que CodeIgniter?

Este cdigo le dice a Kohana que se conecte a una base de datos MySQL llamada " d c l e t o " en localhost con el nombre de usuario " o t y la clave c_olcin ro" " o t . Debes cambiarlas de acuerdo con tu configuracin de servidor de base ro" de datos.

Paso 7: Creando el controlador


Cremos nuestro primer controlador. Recuerda estas convenciones: el nombre de archivo del controlador debe estar en minsculas, por ejemplo a b m p p lu.h la clase controlador debe coincidir con su nombre de archivo pero iniciada con mayscula y debe aadir _ o t o l r por ejemplo Cnrle, Album_Controller Debe tener la clase C n r l e como padre otolr Igualmente, recuerda cmo Kohana estructura sus URLs y cmo puedes llamar a un mtodo de controlador; por ejemplo ht:/otaecread_oaaid .h/otolrfnt tp/hsnm/apt_ekhn/ne ppcnrle/uci o n Echa un vistazo a este simple controlador. 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6

<ppdfnd'YPT' O de'odrc acs alwd' ? h e i e ( S S A H ) R i ( N i e t c e s l o?e . casAbmCnrle etnsCnrle ls lu_otolr ed otolr { pbi fnto _cntut) ulc ucin _osrc( { prn:_cntut) aet:_osrc(; pbi fnto idx) ulc ucin ne( { eh "yfrtcnrle" co M is otolr;

PHP5 OOP (programacin orientada a objetos) es un prerrequisito. Para aprender ms sobre ello, puedes leer aqu.
digitta.com/2009/12/empezando-con-kohana-mejor-que.html 10/29

19/01/12

digitta: Empezando con Kohana, mejor que CodeIgniter?

La funcin constructor, llamada _ c n t u t inicializa la clase y llama al _osrc, constructor padre. La funcin i d es la funcin por defecto, por lo que ser ne usada si llamamos al controlador sin especificar una funcin (por ejemplo, http://localhost/index.php/kohana/album. Tras el nombre del controlador no hay ninguna funcin, la funcin de ndice ser llamada por defecto). Dadas estas reglas bsicas, enfoqumonos en la aplicacin. El controlador de album implementa todas las acciones para la gestin de coleccin de lbumes. Este controlador nos permite crear un nuevo lbum, mostrar los lbumes guardados en la base de datos, actualizar un lbum o borrar un lbum. Crea un archivo llamado a b m p p en application controllers y pega los lu.h siguiente: 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 3 1 3 2 3 3

<ppdfnd'YPT' O de'odrc acs alwd' ? h e i e ( S S A H ) R i ( N i e t c e s l o?e . ca l { AbmCnrle e ed Cnrle lu_otolr n otolr piae$lu_oe; abmmdl piae$er_oe; gnemdl piae$itve; ls_iw piae$raeve; cet_iw piae$paeve; udt_iw pbi fn in_cntut) lc c o _osrc( { prn:_cntut) aet:_osrc(; $hs>lu_oe ti-abmmdl =n AbmMdl e lu_oe; $hs>er_oe ti-gnemdl =n GneMdl e er_oe; $hs>itve ti-ls_iw =n Ve(ls'; e iw'it) $hs>paeve ti-udt_iw =n Ve(udt'; e iw'pae) $hs>raeve ti-cet_iw =n Ve(cet'; e iw'rae) pbi fn inidx) lc c o ne( { $hs>hwabm_it) ti-so_lusls(; piaefn inso_lusls( c o hwabm_it) { $lusls =$hs>lu_oe-gtls(; abm_it ti-abmmdl>e_it) $hs>itve-st'lusls'$lusls ti-ls_iw>e(abm_it,abm_it $hs>itve-rne(RE; ti-ls_iw>edrTU)

digitta.com/2009/12/empezando-con-kohana-mejor-que.html

11/29

19/01/12

digitta: Empezando con Kohana, mejor que CodeIgniter?

3 4 3 5 3 6 3 7 3 8 3 9 4 0 4 1 4 2 4 3 4 4 4 5 4 6 4 7 4 8 4 9 5 0 5 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 6 0 6 1 6 2 6 3 6 4 6 5 6 6 6 7 6 8 6 9 7 0 7 1 7 2 7 3 7 4 7 5 7 6 7 7 7 8 7 9 8 0 8 1 8 2 8 3 8 4

pbi fnto so_raeeio( ulc ucin hwcet_dtr) { $hs>raeve-st'ersls'$hs>e_ ti-cet_iw>e(gne_it,ti-gtg $hs>raeve-rne(RE; ti-cet_iw>edrTU)

pbi fnto so_paeeio(i) ulc ucin hwudt_dtr$d { $lu_aa=$hs>lu_oe-ra(i) abmdt ti-abmmdl>ed$d; $hs>paeve-st'lu_d,abmdt[]> ti-udt_iw>e(abmi'$lu_aa0$hs>paeve-st'ae,abmdt[]>ae ti-udt_iw>e(nm'$lu_aa0-nm $hs>paeve-st'uhr,abmdt[]>u ti-udt_iw>e(ato'$lu_aa0-a $hs>paeve-st'er_d,abmdt[]> ti-udt_iw>e(gnei'$lu_aa0$hs>paeve-st'ersls'$hs>e_e ti-udt_iw>e(gne_it,ti-gtg $hs>paeve-rne(RE; ti-udt_iw>edrTU) pbi fnto cet( ulc ucin rae) { $lu_aaar ( abmdt=ra 'ae nm' = $hs>nu-ps(nm', > ti-ipt>ot'ae) 'uhr ato' = $hs>nu-ps(ato', > ti-ipt>ot'uhr) 'er_d = $hs>nu-ps(gnei' gnei' > ti-ipt>ot'er_d) ) ; $hs>lu_oe-cet(abmdt) ti-abmmdl>rae$lu_aa; ul:eiet'lu'; r:rdrc(abm)

pbi fnto udt( ulc ucin pae) { $lu_aa=ar ( abmdt ra 'ae nm' = $hs>nu-ps(nm', > ti-ipt>ot'ae) 'uhr ato' = $hs>nu-ps(ato' > ti-ipt>ot'uhr 'er_d = $hs>nu-ps(gnei' gnei' > ti-ipt>ot'er_d ) ; $hs>lu_oe-udt(ti-ipt>ot'lu ti-abmmdl>pae$hs>nu-ps(ab ul:eiet'lu'; r:rdrc(abm) pbi fnto dlt(i) ulc ucin eee$d { $hs>lu_oe-dlt(i) ti-abmmdl>eee$d; ul:eiet'lu'; r:rdrc(abm)

piaefnto gtgne_it) rvt ucin e_ersls( { $bgne_it =$hs>er_oe-gtls(; d_ersls ti-gnemdl>e_it) $ersls =ar (; gne_it ra ) i(ief$bgne_it > 1 fszo(d_ersls) = )
12/29

digitta.com/2009/12/empezando-con-kohana-mejor-que.html

19/01/12

digitta: Empezando con Kohana, mejor que CodeIgniter?

8 5 8 6 8 7 8 8 8 9 9 0 9 1 9 2 9 3 9 4 9 5

f ec(d_ersls a $tm o ah$bgne_it ie) { $ersls[ie-i]=$tm>ae gne_it$tm>d ie-nm; n$ersls; gne_it

Djame explicar lo que hace este cdigo. Se declaran cinco variables miembro al inicio: 1 2 3 4 5 6 7 8 piae$lu_oe; abmmdl piae$er_oe; gnemdl piae$itve; ls_iw piae$raeve; cet_iw piae$paeve; udt_iw
?

Estos miembros son privados porque quiero limitar su visibilidad slo a esta clase. En el mtodo c n o cinco miembros: 1 2 3 4 5 6 7 c los objetos de modelo y vista son creados usando los =n AbmMdl e lu_oe; =n GneMdl e er_oe; =n Ve(ls'; e iw'it) =n Ve(udt'; e iw'pae) =n Ve(cet'; e iw'rae)
?

$hs>lu_oe ti-abmmdl $hs>er_oe ti-gnemdl $hs>itve ti-ls_iw $hs>paeve ti-udt_iw $hs>raeve ti-cet_iw

Para crear un objeto modelo usa esta sintaxis: 1 $b_ae=n Nm_oe; ojnm e aeMdl
?

Para crear un objeto vista, usa esta sintaxis:


digitta.com/2009/12/empezando-con-kohana-mejor-que.html 13/29

19/01/12

digitta: Empezando con Kohana, mejor que CodeIgniter?

? $b_ae=n Ve( i _ieae ih _ e in) ojnm e i ' e flnm_ o e n o';

Ahora hay dos objetos para acceder al modelo de lbum y gnero, y tres objetos para acceder a las vistas necesarias para generar la presentacin. El mtodo i d llama al mtodo s o _ l u s l s que lista todos los ne h abm_it lbumes guardados en la base de datos. 1 2 3 $l m_i =$h -abmmdl>e_i (; ab l i >l _oe-g l ) $h -l _i - e(abm_i '$l m_i ) i >i e > 'l l ,ab l ; $h -l _i - ed (RE; i >i e > ne TU)
?

En este mtodo puedes ver cmo el modelo y la vista objeto son usada para acceder a mtodos relativos. " e _ i "es un mtodo del modelo (lo veremos g l luego) que devuelve todos los lbumes guardados en la base de datos. El resultado se guarda en el arra " a b m l " Para pasar el arra de resultados $l _i . del controlador a la vista, el mtodo " e " del objeto vista es llamado. Este mtodo requiere dos parmetros: una nueva variable vaca (a b m l l _i contiene datos de una variable existente ($ l m l ). Ahora la nueva variable ab _i vaca " l m l " contine el arra $ l m l ab _i a b _ i (veremos despus como mostrar su contenido en la vista). El mtodo " e d " con el parmetro T U ne , RE es necesario para generar datos para el navegador. El mtodo s o _ r a e e i o muestra la interfcie de usuario para insertar h cet_dtr un nuevo lbum. 1 2

1 $ h - c e e i - e ( g n e _ i ' $ h - g _?e e . i > a _ e > 'e l , i >e gn $h -ce e i - ed (RE; i > a _ e > ne TU)

La lista de gneros es pasada a la vista. El mtodo s o _ p a e e i o muestra la interfcie de usuario para h udt_dtr actualizar un lbum existente. 1 2 3 4 5 6 7

? $l md a=$h -abmmdl>ed$d; ab _a i >l _oe- a(i) $h - pae i - e(abmi'$l md a0-i) i > d _ e > 'l _d,ab _a []>d; $h - pae i - e(nm'$l md a0-nm) i > d _ e > 'ae,ab _a []>ae; $h - pae i - e(a h '$l md a0-a h ) i > d _ e > ' o ,ab _a []> o ; $h - pae i - e(gnei'$l md a0-gnei) i > d _ e > 'e _d,ab _a []>e _d $h - pae i - e(gne_i '$h -g _e e_i i > d _ e > 'e l , i >e gn l $h - pae i - ed (RE; i > d _ e > ne TU)

digitta.com/2009/12/empezando-con-kohana-mejor-que.html

14/29

19/01/12

digitta: Empezando con Kohana, mejor que CodeIgniter?

8 " e d es un mtodo del modelo (lo veremos despus) que devuelve datos ra" ($ l m d a del lbum con un identificador igual a $ d Entonces, cada ab _a ) i. elemento del lbum de datos devuelto es pasado a la vista. El mtodo c e erecibe datos para un nuevo lbum a partir de la vista y guarda a los datos recibidos en la base de datos. 1 2 3 4 5 6 7 $lu_aaar ( abmdt=ra 'ae nm' = $hs>nu-ps(nm', > ti-ipt>ot'ae) 'uhr ato' = $hs>nu-ps(ato', > ti-ipt>ot'uhr) 'er_d = $hs>nu-ps(gnei' gnei' > ti-ipt>ot'er_d) ) ; $hs>lu_oe-cet(abmdt) ti-abmmdl>rae$lu_aa; ul:eiet'lu'; r:rdrc(abm)
?

$ l m d aes un arra que contiene los datos P S de la vista. Para guardar el ab _a OT lbum, el arra se pasa al mtodo del modelo c e e La ltima lnea es una ra . llamada a un mtodo asistente. Los asistentes (helpers) son funciones que te asisten en el desarrollo. Las clases asistente son automticamente cargadas por Kohana. Los asistentes se declaran como mtodos estticos de una clase, por lo que no hay necesidad de instanciar la clase. En este caso, el mtodo " e i e " rdrc del asistente " r "es llamado y le dice a Kohana que redirija el navegador al l controlador de lbum. Esto evita una nueva insercin (por ejemplo, al pulsar F5). Los mtodos p a e (actualizar) y d l e (borrar) funcionan de la misma d ee forma que c e e a . El ltimo mtodo g _ e e _ i obtiene la lista de gneros del modelo e gn l ($ b g n e _ i ) y construye un nuevo arra ($ e e _ i ) para el d_e l gn l control de seleccin (select) en las vistas. 1 2 3 4 5 6 7 8 9 1 0 1 1 $bgne_it =$hs>er_oe-gtls(; d_ersls ti-gnemdl>e_it) $ersls =ar (; gne_it ra ) i(ief$bgne_it > 1 fszo(d_ersls) = ) { frah$bgne_ita $tm oec(d_ersls s ie) { $ersls[ie-i]=$tm>ae gne_it$tm>d ie-nm; rtr $ersls; eun gne_it
15/29
?

digitta.com/2009/12/empezando-con-kohana-mejor-que.html

19/01/12

digitta: Empezando con Kohana, mejor que CodeIgniter?

Paso 8: Creando el modelo para el proyecto


Creemos los modelos para nuestra aplicacin web. Conviene recordar las convenciones indicadas anteriormente a la hora de crear las clases. A continuacin est el cdigo para el modelo del lbum. Crea un archivo llamado a b m p pen application models y pega en l el siguiente cdigo: l .h 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 3 9

<ppdfnd'YPT' O de'odrc acs alwd' ? h e i e ( S S A H ) R i ( N i e t c e s l o?e . casAbmMdletnsMdl ls lu_oe ed oe { piae$lu_al; rvt abmtbe piae$er_al; rvt gnetbe pbi fnto _cntut) ulc ucin _osrc( { prn:_cntut) aet:_osrc(; $hs>lu_al ='lus; ti-abmtbe abm' $hs>er_al ='ers; ti-gnetbe gne' pbi fnto ra(i) ulc ucin ed$d { $hs>b>hr(i' $d; ti-d-wee'd, i) $ur =$hs>b>e(ti-abmtbe; qey ti-d-gt$hs>lu_al) rtr $ur-rsl_ra(; eun qey>eutary) pbi fnto dlt(i) ulc ucin eee$d { $hs>b>eee$hs>lu_al,ar (i' ti-d-dlt(ti-abmtbe ra 'd pbi fnto udt(i,dt) ulc ucin pae$d$aa { $hs>b>pae$hs>lu_al,$aa ar ti-d-udt(ti-abmtbe dt, ra pbi fnto cet(dt) ulc ucin rae$aa { $hs>b>net$hs>lu_al,$aa; ti-d-isr(ti-abmtbe dt)

pbi fnto gtls( ulc ucin e_it) { $hs>b>eet'lusi a i,lusnm a ti-d-slc(abm.d s dabm.ae s
16/29

digitta.com/2009/12/empezando-con-kohana-mejor-que.html

19/01/12

digitta: Empezando con Kohana, mejor que CodeIgniter?

4 0 4 1 4 2 4 3 4 4 4 5 4 6 4 7

$hs>b>rm$hs>lu_al) ti-d-fo(ti-abmtbe; $hs>b>on$hs>er_al,gne.d ti-d-ji(ti-gnetbe'ersi' $ur =$hs>b>e(; qey ti-d-gt) rtr $ur-rsl_ra(; eun qey>eutary)

Todos los mtodos de los modelos usan la sintaxis del constructor de consultas (Query builder). Esta herramienta de Kohana acelera el tiempo de desarrollo con bases de datos y simplifica la creacin de consultas. Dos variables miembro son declaradas al inicio de la clase: 1 2 piae$lu_al; rvt abmtbe piae$er_al; rvt gnetbe
?

Estos miembros son privados porque quiero limitar la visibilidad slo a esta clase. Son los contenedores de los nombres de las tablas de la base de datos. La primera lnea en el mtodo del constructor carga la biblioteca de base de datos de Kohana en $ h - d . En las dos siguientes lneas, se inicializan las dos i >b variables miembro. 1 2 3 prn:_cntut) aet:_osrc(; $hs>lu_al ='lus; ti-abmtbe abm' $hs>er_al ='ers; ti-gnetbe gne'
?

La consulta en el mtodo e drecupera los registros de lbum que tengan un a cierto identificador (" i " $ d ). 1 2 3 4 $hs>b>hr(i' $d; ti-d-wee'd, i) $ur =$hs>b>e(ti-abmtbe; qey ti-d-gt$hs>lu_al) rtr $ur-rsl_ra(; eun qey>eutary)
?

La consulta en el mtodo d l eelimina la fila de la tabla de lbumes que tenga ee un cierto identificador (" i " $ d ). 1
? $hs>b>eee$hs>lu_al,ar (i'= $d ti-d-dlt(ti-abmtbe ra 'd > i

digitta.com/2009/12/empezando-con-kohana-mejor-que.html

17/29

19/01/12

digitta: Empezando con Kohana, mejor que CodeIgniter?

La consulta en el mtodo p a e actualiza la fila de la tabla de lbumes que d tenga un cierto identificador (" i " con los nuevos valores del arra " d a . $d) $a " 1
? $hs>b>pae$hs>lu_al,$aa ar (i' ti-d-udt(ti-abmtbe dt, ra 'd

El arra " d a debe contener nombres de registros como claves del arra , y sus $a " valores como valores del arra . El arra debe tener esta forma: 1 2 3 4 5 $aa=ar ( dt ra 'ae nm' 'uhr ato' 'er_d gnei' ) ;
?

= > = > = >

'lu_ae, abmnm' 'uhrnm' ato_ae, 'er_d gnei'

La consulta en el mtodo g _ i e l 1 2 3 4 5

recupera todas las filas de lbumes.

? $hs>b>eet'lusi a i,lusnm a nm,lu ti-d-slc(abm.d s dabm.ae s aeabm $hs>b>rm$hs>lu_al) ti-d-fo(ti-abmtbe; $hs>b>on$hs>er_al,gne.d,abm.er ti-d-ji(ti-gnetbe'ersi''lusgne $ur =$hs>b>e(; qey ti-d-gt) rtr $ur-rsl_ra(; eun qey>eutary)

Ahora el modelo para los gneros. Crea un archivo llamado g n e p p en e .h application models y pega el siguiente cdigo en l: 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9

<ppdfnd'YPT' O de'odrc acs alwd' ? h e i e ( S S A H ) R i ( N i e t c e s l o?e . casGneMdletnsMdl ls er_oe ed oe { piae$er_al; rvt gnetbe fnto _cntut) ucin _osrc( { prn:_cntut) aet:_osrc(; $hs>er_al ='ers; ti-gnetbe gne' fnto gtls( ucin e_it) { $ur =$hs>b>e(ti-gnetbe; qey ti-d-gt$hs>er_al) rtr $ur-rsl_ra(; eun qey>eutary)

digitta.com/2009/12/empezando-con-kohana-mejor-que.html

18/29

19/01/12

digitta: Empezando con Kohana, mejor que CodeIgniter?

Este modelo es muy simple, por lo que no malgaster tiempo comentndolo. Los modelos y el controlador estn preparados para funcionar. Ahora trabajemos sobre las vistas.

Paso 9: Creando la vista del proyecto


Las vistas son archivos que contienen la capa de presentacin de la aplicacin. Su propsito es mantener esta informacin separada de la lgica de la aplicacin para facilitar la reusabilidad y mantener el cdigo limpio. Para este proyecto se necesitan tres vistas: una para listar la coleccin de lbumes, otra para crear un nuevo lbum, y otra para editar un lbum existente. Crea un archivo llamado l . h en application views y pega el siguiente i pp cdigo en l: 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0

< D C Y E h m P B I " / W C / T X T L 1 0 S r c / E?" !OTP tl ULC -/3/DD HM . tit/N <tl hm> <ed ha> <pp ?h eh hm:s lsetar co tl:t ehe(ra ( 'sescss l' ast/s/t e ) , ar ra ( 'cen sre' ) FLE; , AS) ? > <il>DCLETO<tte tteC OLCIN/il> <ha> /ed <o > bd <pp ?h eh hm:iae'sesiae/d.n' co tl:mg(ast/mgsadpg eh hm:aco(abmso_raeeio co tl:nhr'lu/hwcet_dtr ? > <al cas"it clsaig"" tbe ls=ls" elpcn=0> <r t> <dclpn""cas"ittte>DCleto t osa=5 ls=ls_il"C olci <t> /r <r t> <dcas"edr"Abmnm<t> t ls=haes>lu ae/d <dcas"edr"Ato<t> t ls=haes>uhr/d <dclpn''cas"edr"Gne/d t osa=3 ls=haes>er<t> <t> /r
19/29

digitta.com/2009/12/empezando-con-kohana-mejor-que.html

19/01/12

digitta: Empezando con Kohana, mejor que CodeIgniter?

3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 3 9 4 0 4 1 4 2 4 3 4 4 4 5 4 6

<pp ?h frah$lusls a $tm oec(abm_it s ie) { eh "t>; co <r" eh "t cas'tm>.ie-nm.<t> co <d ls=ie'"$tm>ae"/d eh "t cas'tm>.ie-ato. co <d ls=ie'"$tm>uhr eh "t cas'tm>.ie-gne"/d co <d ls=ie'"$tm>er.<t eh "t cas'tm>.tl:nhr'lu co <d ls=ie'"hm:aco(ab eh "t cas'tm>.tl:nhr'lu co <d ls=ie'"hm:aco(ab eh "/r" co <t>; ? > <tbe /al> <bd> /oy <hm> /tl

Esta vista muestra una pgina h ml que contiene una lista de todos los lbumes. Esta lista ha sido creada usando un bucle f r a hque imprime la informacin oec en una tabla h ml. Para cada fila de lbum, hay dos imgenes: una "cruz roja" y una "libro de bolsillo". Enlazan respectivamente al mtodo d l ey al mtodo ee p a edel controlador. Ambos pasan el identificador del lbum al controlador d usando una peticin G T Sobre la lista hay un botn para crear un nuevo lbum. E. En este cdigo tambin se usa un asistente h ml ofrecido por Kohana que acelera las operaciones para escribir pginas h ml. Cremos ahora un archivo llamado c e e p pen application views . ra .h 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 < D C Y E h m P B I " / W C / T X T L 1 0 S r c / E?" !OTP tl ULC -/3/DD HM . tit/N <tl hm> <ed ha> <pp ?h eh hm:syehe(ra co tl:tlsetar ( 'sescssye ast/s/tl' ) , ar ra ( 'cen sre' ) FLE; , AS) ? > <il>DCLETO<tte tteC OLCIN/il> <ha> /ed <oy bd> <ppeh fr:oe(abmcet';? ?h co om:pn'lu/rae) > <al cas'dtr> tbe ls=eio'
20/29

digitta.com/2009/12/empezando-con-kohana-mejor-que.html

19/01/12

digitta: Empezando con Kohana, mejor que CodeIgniter?

1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 3 9 4 0 4 1 4 2 4 3 4 4 4 5 4 6

<r t> <dclpn''cas'dtrtte>raenwabm/ t osa=2 ls=eio_il'Cet e lu< <t> /r <pp ?h eh "t>; co <r" eh "t>.om:ae(nm' 'ae '.<t>; co <d"fr:lbl'ae, Nm: )"/d" eh "t>.om:nu(nm' ')"/d" co <d"fr:ipt'ae, '.<t>; eh "/r" co <t>; eh "t>; co <r" eh "t>.om:ae(ato' 'uhr '.<t> co <d"fr:lbl'uhr, Ato: )"/d" eh "t>.om:nu(ato' ')"/d" co <d"fr:ipt'uhr, '.<t>; eh "t/" co <r>; eh "t>; co <r" eh "t>.om:ae(gne,'er:'.<t> co <d"fr:lbl'er' Gne )"/d" eh "t>.om:rpon'er_d,gne_it. co <d"fr:dodw(gnei'$ersls) eh "t/" co <r>;

? > <tbe /al> <ppeh fr:coe) ? ?h co om:ls(; > <bd> /o <hm> /tl

eh "t>; co <r" eh "t clpn''ain'et>.om:umt'um co <d osa=2 lg=lf'"fr:sbi(sb eh "/r" co <t>;

La ltima es la vista de actualizacin. Crea un archivo application views . 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7

p a e p p en d .h

< D C Y E h m P B I " / W C / T X T L 1 0 S r c / E?" !OTP tl ULC -/3/DD HM . tit/N <tl hm> <ed ha> <pp ?h eh hm:s lsetar co tl:t ehe(ra ( 'sescss l' ast/s/t e ) , ar ra ( 'cen sre' ) FLE; , AS) ? > <il>DCLETO<tte tteC OLCIN/il> <ha> /ed <o > bd <ppeh fr:oe(abmudt';? ?h co om:pn'lu/pae) >
21/29

digitta.com/2009/12/empezando-con-kohana-mejor-que.html

19/01/12

digitta: Empezando con Kohana, mejor que CodeIgniter?

1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 3 9 4 0 4 1 4 2 4 3 4 4 4 5 4 6 4 7 4 8 4 9 5 0

<al ca =eio' tbe l 'dtr> <r t> <dclpn''ca =eio_il'Udt abm/d t osa=2 l 'dtrtte>pae lu<t> <t> /r <pp ?h eh "t>; co <r" eh "t>.om:ae(nm' 'ae '.<t>; co <d"fr:lbl'ae, Nm: )"/d" eh "t>.om:nu(nm' $ae.<t>; co <d"fr:ipt'ae, nm)"/d" eh "/r" co <t>; eh "t>; co <r" eh "t>.om:ae(ato' 'uhr '.<t> co <d"fr:lbl'uhr, Ato: )"/d" eh "t>.om:nu(ato' $uhr.<t>; co <d"fr:ipt'uhr, ato)"/d" eh "t/" co <r>; eh "t>; co <r" eh "t>.om:ae(gne,'er:'.<t> co <d"fr:lbl'er' Gne )"/d" eh "t>.om:rpon'er_d,gne_it co <d"fr:dodw(gnei'$ersls, eh "t/" co <r>;

eh "t>; co <r" eh "t clpn''ain'et>.om:umt'um co <d osa=2 lg=lf'"fr:sbi(sb eh "/r" co <t>; ? > <tbe /al> <pp ?h eh fr:hde(abmi'$lu_d; co om:idn'lu_d,abmi) eh fr:coe) co om:ls(; ? > <bd> /o <hm> /tl

El primero es un editor simple que permite al usuario insertar informacin sobre un nuevo lbum. Los campos como autor y nombre sern insertados usando una entrada h ml y el gnero usando un combo. Una vez que el usuario hace click en el botn c ea e, toda la informacin se pasa como una peticin P S al mtodo OT c e e p a e del controlador de lbum. Cuando el controlador recibe estas ra / d variables po eada llama al modelo que inserta un nuevo lbum en la base de datos. Los formularios de ambas vistas hacen uso del asistente de formularios. Para dar un poco de estilo a nuestra aplicacin, crea la carpeta a e en la carpeta raz de Kohana al mismo nivel de la carpeta de aplicaciones. brelo y crea dos nuevas carpetas: c e image .
digitta.com/2009/12/empezando-con-kohana-mejor-que.html 22/29

19/01/12

digitta: Empezando con Kohana, mejor que CodeIgniter?

En la carpeta c en l: 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 3 9 4 0 4 1 4 2 4 3 4 4 4 5 4 6 4 7 a{

crea un nuevo archivo llamado s l . s y pega lo siguiente t ecs


?

fn-ai :Vraa Gnv,Ail Hleia sn-e o fml edn, eea ra, evtc, ass fn-eg :nra; o ih oml fn-ie 1p; o : 2x cl :#0; oo 0F e ia-lg:ettp claintx-o;

ig{ m b d :0 o e ;

lbl{ ae fn-ai :Vraa Gnv,Ail Hleia sn-e o fml edn, eea ra, evtc, ass fn-eg :nra; o ih oml fn-ie 1p; o : 2x ipt{ nu b d :1xsld#0; o e p oi 00 slc { eet i h15x d :8p;

tbeeio al.dtr { e -lg:cne; ain etr fn-ai :Vraa Gnv,Ail Hleia sn-e o fml edn, eea ra, evtc, ass fn-eg :nra; o ih oml fn-ie 1p; o : 1x cl :#f; oo ff i h 20x d : 8p; bcgon-oo:#6; ak dcl 66 b d :0x o e p; b d -olpe clas; o e cla : olpe b d -pcn:0x o e aig p; tbeeio t.dtrtte al.dtr deio_il { bcgon-oo:#6; ak dcl 66 cl :#f; oo ff pdig 4x adn: p; e -lg:lf; ain et fn-eg :bl; o ih od
23/29

digitta.com/2009/12/empezando-con-kohana-mejor-que.html

19/01/12

digitta: Empezando con Kohana, mejor que CodeIgniter?

4 8 4 9 5 0 5 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 6 0 6 1 6 2 6 3 6 4 6 5 6 6 6 7 6 8 6 9 7 0 7 1 7 2 7 3 7 4 7 5 7 6 7 7 7 8 7 9 8 0 8 1 8 2 8 3 8 4 8 5 8 6 8 7 8 8 8 9 9 0 9 1 9 2 9 3 9 4 9 5 9 6 9 7

fn-ie 1p; ots : 6x tbeeio t al.dtr d { pdig 4x adn: p;

tbels al.it { t tain cne; e -lg: etr fn-ai :Vraa Gnv,Ail Hleia sn-e otfml edn, eea ra, evtc, ass fn-egt nra; ot ih: oml fn-ie 1p; ots : 1x clr #f; oo: ff it:20x dh 8p; bcgon-oo:#6; akrudclr 66 bre:0x odr p; bre-olpe clas; odrclas: olpe bre-pcn:0x odrsaig p; tbels t.tm al.it die { bcgon-oo:#C; akrudclr CC clr #0; oo: 00 pdig 4x adn: p; t tain lf; e -lg: et bre:1x#f sld odr p ff oi; tbels t.itttetbels t.edr al.it dls_il,al.it dhaes { bcgon-oo:#6; akrudclr 66 clr #f; oo: ff pdig 4x adn: p; t tain lf; e -lg: et bre-otm 2x#f sld odrbto: p ff oi; fn-egt bl; ot ih: od tbels t.ittte al.it dls_il { fn-ie 1p; ots : 6x tbels t.edr al.it dhaes { fn-ie 1p; ots : 2x

digitta.com/2009/12/empezando-con-kohana-mejor-que.html

24/29

19/01/12

digitta: Empezando con Kohana, mejor que CodeIgniter?

Ahora copia las siguientes imgenes en la carpeta image : Eso es todo. Apunta el navegador a http://localhost/kohana/index.php/album y deberas ver algo parecido a esto:

Si intentas crear un nuevo lbum o editar uno existente, deberas ver algo similar a esto:

digitta.com/2009/12/empezando-con-kohana-mejor-que.html

25/29

19/01/12

digitta: Empezando con Kohana, mejor que CodeIgniter?

Paso 10: Pensamientos finales


Desde luego, algunas mejoras son necesarias para esta aplicacin, pero con muy poco cdigo has creado una pequea aplicacin web. Ahora, sabes cmo usar el patrn MVC con Kohana, y cmo usar las bibliotecas y asistentes de la base de datos. Para aprender ms, lee la documentacin oficial. Gracias a Kohana, el mantenimiento de cdigo se convierte en una tarea fcil, y aadir nuevas caractersticas es pan comido. Espero que hayas disfrutado del tutorial.

k@beza dijo... Muy bueno el articulo y muy buen trabajo de traduccion Saludos
15/12/09 20:03

An nimo dijo... Si, es mejor que CI.


04/01/10 16:32

digitta.com/2009/12/empezando-con-kohana-mejor-que.html

26/29

19/01/12

digitta: Empezando con Kohana, mejor que CodeIgniter?

caloweb dijo... Excelente


12/01/10 20:15

Annimo dijo... muy til, gracias


02/03/10 12:14

Annimo dijo... Estupendo, muchas gracias


28/07/10 18:36

Tomas Barrios H. dijo... Cuales son los beneficios en comparacion a CodeIgniter?


24/08/10 23:43

Jose dijo... Un guia para aprendizes excelente aunque yo como el primero recomendaria que la actualizases para la version actual. Un saludo, :D
15/02/11 22:57

Annimo dijo... no funciona el ejemplo con la ltima versin de kohana....


02/05/11 00:54

KIDO dijo... Me marca error en: 34 $this->db->insert($this->album_table, $data); 35 } 36 37 public function get_list() 38 { 39 $this->db->select('albums.id as id,albums.name as name,albums.author as author, genres.name as genre'); 40 $this->db->from($this->album_table); 41 $this->db->join($this->genre_table,'genres.id','albums.genre_id'); 42 $query = $this->db->get(); 43 return $query->result_array(); 44 }

LA LINEA 39 ES BUEN PROYECTO PARA INICIAR EN KOHANA...GRACIAS...


digitta.com/2009/12/empezando-con-kohana-mejor-que.html 27/29

19/01/12

digitta: Empezando con Kohana, mejor que CodeIgniter?

PODRIAS AYUDARME EN EL ERROR???


02/10/11 03:46

Publicar un comentario en la entrada

I rdc n o e

cmnai.. oe ro.

Entrada ms reciente Suscribirse a: Enviar comentarios (Atom)

Pgina principal

Entrada antigua

ltimos link en indiza.com


Cargando... Recibir actualizaciones por Email Contactar.

Archivo del blog


enero 2012 (8) diciembre 2011 (10) noviembre 2011 (13) octubre 2011 (9) febrero 2011 (2) enero 2010 (1) diciembre 2009 (2)
digitta.com/2009/12/empezando-con-kohana-mejor-que.html 28/29

19/01/12

digitta: Empezando con Kohana, mejor que CodeIgniter?

noviembre 2009 (6) octubre 2009 (1) septiembre 2009 (1) agosto 2009 (4) julio 2009 (3) junio 2009 (4) ma o 2009 (9) abril 2009 (17) mar o 2009 (10) febrero 2009 (12) enero 2009 (20) diciembre 2008 (13) noviembre 2008 (12) octubre 2008 (24) septiembre 2008 (11) agosto 2008 (12) julio 2008 (22) junio 2008 (31) ma o 2008 (50) abril 2008 (40) mar o 2008 (194)

digitta.com/2009/12/empezando-con-kohana-mejor-que.html

29/29

También podría gustarte