Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Manual Kumbia PHP Framework v0-5
Manual Kumbia PHP Framework v0-5
Framework
Porque Programar debera ser ms
fcil
Libro de Kumbia: Porque Programar debera ser ms fcil 1
ndice de contenido
1 Agradecimientos1!
! "ntroducci#n1$
$ %obre &l Libro de Kumbia1'
( )*ue+o en uso de Frameworks,1-
(1 ).u/ 0ace un Framework,1-
(! 1eali2ar a3licaciones orientadas a 4suarios 1-
($ )Por qu/ Kumbia 5 no otro Framework, 1-
' %obre Kumbia16
- Kumbia en su Punto17
-1 "ntroducci#n 17
-! ).u/ es un Framework, 17
6 Kumbia +s 8tros Frameworks19
7 ).u/ es Kumbia,!:
9 )&st 0ec0o kumbia 3ara m,!!
1: *ue+e 1a2ones 3ara 4sar Kumbia!$
11 "nstalando Kumbia!(
111 Prerrequisitos !(
11! "nstalando !(
11$ ;onfiguraci#n de A3ac0e !(
11$1 )Por qu/ es im3ortante <od=1ewrite,!'
11( ;onfiguraci#n de PHP!-
11' Porque Kumbia utili2a PHP',!-
11- ;onfiguraci#n de <5%.L !-
116 "nstalaci#n 5 ;onfiguraci#n con 8racle !-
117 >etalles &s3ecficos 3ara %8 !6
1! ;reaci#n de Pro5ectos!7
1!1 "ntroducci#n !7
1!! "niciar un Pro5ecto !7
1!$ >irectorios de Kumbia !7
1!( 8tros >irectorios !7
1!' 1esumen !7
1$ &?3licando la ;onfiguraci#n!9
1$1 "ntroducci#n !9
0tt3:@@wwwassemblacom@wiki@s0ow@kumbia@Parte1=;a3itulo(!9
1( A 3artir de un <odelo <A;!9
1' &?3licando la "m3lementaci#n <A;$:
1'1 "ntroducci#n $:
1'! ;once3tos $1
1'$ &Bem3lo $1
1- Primera A3licaci#n en Kumbia$!
&l 3resente ca3tulo tiene como obBeti+o entender la creaci#n de una 3rimera a3licaci#n usando
KumbiaC que nos ser+ir 3ara entender la arquitectura <A; 5 algunos caractersticas
interesantes $!
*uestra Primera A3licaci#n$!
16 <odelos 5 Dases de >atos en Kumbia$!
161 "ntroducci#n $!
16! ;a3a de Abstracci#n "nde3endiente $!
16$ Ada3tadores Kumbia $!
17 &squema de Acceso a Dases de >atos en Kumbia $$
171 <odelos $$
19 Acceso >irecto a 1>D<%$(
191 La ;lase >dDase $(
19! ;rear una instancia de >bDase $(
Libro de Kumbia: Porque Programar debera ser ms fcil !
4so de la Funci#n DbDase::rawEconnectFG $(
19$ Pro3iedades de la ;lase >bDase$(
19$1 Hdb=I"dE;onnection$(
19$! Hdb=Ilast1esult.uer5 $(
19$$ Hdb=Idb4ser$(
19$( Hdb=IdbHost $(
19$' Hdb=IdbPort $(
19$- Hdb=IdbPass $(
19$6 Hdb=Ilast&rror $'
19$7 Hdb=Idb*ame $'
19( </todos de la ;lase >D $'
19(1 .uer5 $'
;lose $'
19(! Fetc0 Arra5 $'
19($ *um 1ows $-
Field *ame $-
19(( >ata %eek $-
19(' Affected 1ows $-
19(- &rror $-
19(6 *o &rror $6
19(7 Find $6
19(9 "n .uer5 $6
19(1: "n .uer5 Assoc $6
19(11 "n .uer5 *um $7
19(1! Fetc0 8ne $7
19(1$ Jable &?ists $7
!: )Por qu/ usar una ca3a de Abstracci#n,$9
!1 La Aida sin Acti+e1ecord(:
!! KParmetros con *ombreL(1
!$ Acti+e1ecord(!
!$1 AentaBas del Acti+e 1ecord (!
!$! ;rear un <odelo en Kumbia (!
;olumnas 5 Atributos (!
!$$ Lla+es Primarias 5 el 4so de ">s ($
!$( ;14>: ;reate F;rearGC 1ead FLeerGC 43date FActuali2arGC >elete FDorrarG ($
!$(1 ;reando 1egistros ((
!$(! ;onsultando 1egistros ((
!$($ &l 3oderoso Find ('
!$(( PromedioC ;ontandoC %umandoC <nimo 5 <?imo (-
!$(' Actuali2ando 1egistros e?istentes (-
!$(- Dorrando 1egistros (6
!$(6 Pro3iedades %o3ortadas(6
!$' ;on+enciones en Acti+e1ecord(6
!$'1 ;on+enciones Menerales (6
!$'! "d (6
!$'$ cam3oEid (6
!$'( cam3oEat (7
!$'' cam3oEin (7
!$- ;on+enciones 3ara 1>D<s (7
!$-1 ;on+enciones &s3eciales 3ara Postgre%.L (7
!$-! ;on+enciones &s3eciales 3ara 8racle (7
!( Acti+e 1ecord AP"(9
!(1 ;onsulta (9
!(11 distinct (9
!(11 findEallEb5Esql Fstring HsqlG (9
Libro de Kumbia: Porque Programar debera ser ms fcil $
!(1! findEb5Esql Fstring HsqlG (9
!(1$ findEfirst ':
!(1( find '1
!(1' selectEoneFstring HselectEquer5G '!
!(1- selectEoneFstring HselectEquer5G FstaticG '!
!(16 e?ists '!
!(17 findEallEb5'!
!(19 findEb5ENcam3oN'!
!(11: findEallEb5ENcam3oN'!
!(! ;onteos 5 %umatorias '$
!(!1 count'$
!(!! sum'$
!(!$ countEb5Esql'$
!($ PromediosC <?imos 5 <inmos '$
!($1 a+erage'$
!($! ma?imum '$
!($$ minumum '$
!(( ;reaci#n@Actuali2aci#n@Dorrado de 1egistros'(
!((1 create '(
!((! u3date '(
!(($ u3dateEall '(
!((( sa+e '(
!((' createEfromErequest '(
!((- sa+eEfromErequest ''
!((6 delete ''
!((7 deleteEall ''
!(' Aalidaciones''
!('1 +alidatesE3resenceEof ''
!('! +alidatesElengt0Eof ''
!('$ +alidatesEnumericalit5Eof '-
!('( +alidatesEemailEin '-
!('' +alidatesEuniquenessEof '-
!('- +alidatesEdateEin '6
!('6 +alidatesEformatEof '6
!(- Jransaccionalidad '6
!(-1 commitFG '6
!(-! beginFG '6
!(-$ rollbackFG '7
!(6 8tros <etodos '7
!(61 sqlFstring HsqlG '7
!(7 ;allbacks en Acti+e1ecord'7
!(71 beforeE+alidation'9
!(7! beforeE+alidationEonEcreate'9
!(7$ beforeE+alidationEonEu3date '9
!(7( afterE+alidationEonEcreate '9
!(7' afterE+alidationEonEu3date '9
!(7- afterE+alidation '9
!(76 beforeEsa+e '9
!(77 beforeEu3date'9
!(79 beforeEcreate'9
!(71: afterEu3date -:
!(711 afterEcreate-:
!(71! afterEsa+e -:
!(71$ beforeEdelete-:
!(71( afterEdelete -:
Libro de Kumbia: Porque Programar debera ser ms fcil (
!(9 Persistencia-1
!(1: Jra2a 5 >ebug en Acti+e1ecord-!
!(11 Jra2a en Pantalla -!
!(1! <ostrar &rrores en 8bBetos Acti+e1ecord -$
!(1$ Asociaciones-$
);omo usar Asociaciones,-(
!(1$1 Pertenece a-(
!(1$! Jienes un-'
!(1$$ Jiene muc0os--
!(1$( Jiene 5 3ertenece a muc0os-6
!(1( <ulti3les cone?iones en Acti+e1ecord-7
!(1' Paginadores-9
!(1- Paginando en Acti+e1ecord6:
!(16 Acti+e1ecord 5 los ;am3os con Aalores 3or >efecto6!
!' Meneraci#n >e Formularios6$
!'1 Ji3os de Formularios 6$
!'! AentaBas Meneradores de Formularios 6$
!'$ >es+entaBas Meneradores de Formularios 6(
!- %tandardForm6'
!-1 "ntroducci#n 6'
!-! ;rear un controlador 3ara el Formulario Album6'
!-$ ;on+enciones de los *ombres de las ;olumnas 6-
!-$1 id 6-
!-$! tablaEid 6-
!-$$ cam3oEat 6-
!-$( cam3oEin 66
!-$' email66
!-( ;om3ortamiento de un Formulario %tandard 66
!-' Pro3iedades de un Formulario %tandard 66
!-'1 Hscaffold FJrue o FalseG 66
!-'! Hsource66
!-'$ Hforce67
!-- </todos de la ;lase %tandardForm 67
!--1 setEformEca3tionFHtitleG 67
!--! useE0el3erFHcam3oG 67
!--$ setEt53eEtimeFHcam3oG 69
!--( setEt53eEte?tareaFHcam3oG 69
!--' setEt53eEimageFHcam3oG 69
!--- setEt53eEnumericFHcam3oG 69
!--6 setEt53eEdateFHcam3oG 69
!--7 setEt53eEemailFHcam3oG 69
!--9 setEt53eE3asswordFHcam3oG 7:
!--1: setEte?tEu33erFHcam3oG 7:
!--11 setEcomboEstaticFHcamoC arra5 H+aloresG 7:
!--1! setEcomboEd5namicFHcam3oC HtablaC Hcam3o>etalleC OcolumnErelation: Hcam3oPG
7:
!--1$ ignoreFHcam3oG 71
!--1( setEsi2eFHcam3oC Hsi2eG 71
!--1' setEma?lengt0FHcam3oC Hlengt0G 7!
!--1- notEbrowseFHcam3oC QHcam3o!C RG 7!
!--16 notEre3ortFHcam3oG 7!
!--17 setEtitleEimageFHimG 7!
!--19 fieldsE3erErowFHnumberG 7!
!--!: unableEinsert 7!
!--!1 unableEdelete 7!
Libro de Kumbia: Porque Programar debera ser ms fcil '
!--!! unableEu3date 7!
!--!$ unableEquer5 7!
!--!( unableEbrowse 7$
!--!' unableEre3ort 7$
!--!- routeEtoFHcontrollerCHactionCHidG 7$
!--!6 setE0iddenFHcam3oG 7$
!--!7 setEquer5Eonl5FHcam3oG 7$
!--!9 setEca3tionFHcam3oC Hca3tionG 7$
!--$: setEactionEca3tionFHactionC Hca3tionG 7$
!--$1 setEe+entFHactionC Hca3tionG 7(
!--$! setEattributeFHfieldC HattributeCH+alueG 7(
!--$$ s0owEnotEnullsFG7(
!--$( setEmessageEnotEnullFHmessageG 7(
!-6 &+entos del lado del ;liente F;allbacksG 7'
!-61 beforeEenableEinsert7'
!-6! afterEenableEinsert 7'
!-6$ beforeEenableEu3date 7'
!-6( afterEenableEu3date 7'
!-6' beforeEenableEquer5 7'
!-6- afterEenableEquer5 7'
!-66 beforeE+alidation 7'
!-67 afterE+alidation 7'
!-69 beforeEinsert 7'
!-61: beforeEu3date 7'
!-611 beforeEquer5 7'
!-61! beforeEre3ort 7-
!-61$ beforeEcancelEin3utFactionG 7-
!-7 &+entos del lado del %er+idor F;allbacksG 76
!-71 beforeEinsert 76
!-7! afterEinsert 77
!-7$ beforeEu3date 77
!-7( afterEu3date 77
!-7' +alidation 77
!-7- beforeEdelete 77
!-76 afterEdelete 77
!-77 beforeEfetc0 77
!-79 afterEfetc0 77
!-9 JrabaBando con "mgenes 79
!-1: Aalidaciones FA ni+el de ;am3oG 79
!-11 ;ombos &stticos 9:
!-1! ;ambiando el as3ecto de Formularios %tandardForm9:
!6 ;ontroladores9!
!61 &Bem3lo 9$
!6! ;reaci#n de un ;ontrolador 9$
!7 A33lication;ontroller9(
!71 </todos de la ;lase A33lication;ontroller 9'
!711 renderFH+iewG 9'
!71! redirectFHurlC HsecondsS:'G 9'
!71$ 3ostFH+alueG 9'
!71( getFH+alueG 9-
!71' requestFH+alueG 9-
!71- renderE3artialFHnameG 9-
!716 routeEtoFQ3arams: +alorRG 9-
!717 redirectFHurlEcontroladorG9-
!719 cac0eEla5outFHminutesG 96
Libro de Kumbia: Porque Programar debera ser ms fcil -
!711: notEfoundFHcontrollerC HactionG 96
!7111 setEres3onseFHt53eG 96
!711! isEalnumFH+alorG96
!711$ loadEreacordFHrecordG97
!711( isEnumericFH+alorG99
!9 8btener +alores desde una de Kumbia1::
$: Persistencia en ;ontroladores1:$
$1 Filtros en ;ontroladores1:'
$11 beforeEfilterFHcontrollerC HactionC HidG1:'
$1! afterEfilterFHcontrollerC HactionC HidG1:'
$1$ notEfoundFHcontrollerC HactionC HidG1:-
$! A33lication;ontrollerDase1:6
$$ &nrutamiento 5 1edirecciones1:7
$$1 )Por qu/ re=direccionamiento, 1:7
$$! &sttico1:7
$$$ >inmico 1:9
$( Filter11:
$(1 .ue es un Filtro,11:
$(! 4tili2aci#n Dsica11:
$($ </todos de la clase Filter111
$($1 addEfilterFHfilterG111
$($! a33l5FH+arC QfiltersRG 5 a33l5EfilterFH+arC QfiltersRG111
$($$ getEinstanceFG111
$(( Filtros >is3onibles111
$((1 addslas0es111
$((! alnun111
$(($ al30a111
$((( date111
$((' digit111
$((- 0tmlentities111
$((6 0tmls3ecialc0ars111
$((7 u33er11!
$((9 trim11!
$((1: stri3tags11!
$((11 stri3s3ace11!
$((1! stri3slac0es11!
$((1$ numeric11!
$((1( nl!br11!
$((1' md'11!
$((1- lower11!
$((16 i3+(11!
$((17 int11!
$' Aistas11$
$'1 Porque usar Aistas, 11$
$'! 4so de Aistas 11(
$'$ 4so de La5outs 11'
$'( 4so de Jem3lates 11'
$'' 4so de Partials 11-
$'- 4so de ;%% en Kumbia11-
$'6 4so de contentFG116
$'7 Hel3ers117
$'71 linkEtoFHaccionC Hte?toC QH3arametrosRG117
$'7! linkEtoFHaccionC Hte?toC QH3arametrosRG117
$'7$ linkEtoEremoteFHaccionC Hte?toC HobBetoEaEactuali2arC QH3arametrosRG117
$'7( buttonEtoEremoteEactionFHaccionC Hte?toC HobBetoEaEactuali2arC QH3arametrosRG119
Libro de Kumbia: Porque Programar debera ser ms fcil 6
$'7' Ba+ascri3tEincludeEtagFHarc0i+oEBsG119
$'7- Ba+ascri3tElibrar5EtagFHarc0i+oEBsG119
$'76 st5les0eetElinkEtagFHarc0i+oEcssC C QuseE+ariables: trueRG119
$'77 imgEtagFHsrcG119
$'79 formEremoteEtagFHactionC HobBetoEqueEactuali2aG1!:
$'71: formEtagFHactionG1!:
$'711 endEformEtagFG1!:
$'71! comillasFHte?toG1!:
$'71$ submitEtagFHca3tionG1!1
$'71( submitEimageEtagFHca3tionC HsrcG1!1
$'71' buttonEtagFHca3tionG1!1
$'71- te?tEfieldEtagFHnombreG1!1
$'716 c0eckbo?EfieldEtagFHnombreG1!1
$'717 numericEfieldEtagFHnombreG1!1
$'719 te?tu33erEfieldEtagFHnombreG1!1
$'7!: dateEfieldEtagFHnombreG1!!
$'7!1 fileEfieldEtagFHnombreG1!!
$'7!! radioEfieldEtagFHnombreC HlistaG1!!
$'7!$ te?tareaEtagFHnombreG1!!
$'7!( 3asswordEfieldEtagFHnombreG1!!
$'7!' 0iddenEfieldEtagFHnameG1!!
$'7!- selectEtagFHnameC HlistaG1!!
$'7!6 o3tionEtagFH+alorC Hte?toG1!$
$'7!7 u3loadEimageEtagFHnombreG1!$
$'7!9 setEdro33ableFHnombreC HaccionG1!$
$'7$: redirectEtoFHurlC HsegundosG1!$
$'7$1 renderE3artialFH+istaE3artialC H+alorSTTG1!$
$'7$! brEbreakFHnumeroG 1!$
$'7$$ trEbreakFHnumeroG 1!(
$'7$( trEcolorFHcolor1C Hcolor!C QHcolornRG1!(
$'7$' u3daterEselectFHnombreG 1!(
$'7$- te?tEfieldEwit0Eautocom3leteFHnombreG1!(
$'7$6 truncateFHte?toC HnumeroS:G1!'
$'7$7 0ig0lig0tFHte?toC Hte?toEaEresaltarG1!'
$'7$9 mone5FH+alorG1!'
$'7(: dateEfieldEtagFHnameG1!-
$'7(1 selectEtagFG1!-
$'9 Aerificar en+o de datos al controlador1!6
$'91 0asE3ostFHnameG1!6
$'9! 0asEgetFHnameG1!6
$'9$ 0asErequestFHnameG1!6
$'1: Hel3ers de usuario en Kumbia1!7
$'11 Formularios no intrusi+os1!9
$'1! Autocarga de 8bBetos1$:
$'1$ Paginador1$!
$(71 3aginateFG1$!
$'1( 3aginateEb5EsqlFG1$$
$- Denc0mark1$(
$(' </todos Denc0mark1$(
$('1 startEclockFHnameG1$(
$('! timeEe?ecutionFHnameG1$(
$('$ memor5EusageFHnameG1$(
$6 A;L1$'
$61 </todos de la ;lase A;L1$-
$611 addEroleFAcl1ole Hrole8bBectC HaccessEin0eritsSTTG1$-
Libro de Kumbia: Porque Programar debera ser ms fcil 7
$61! addEin0eritFHroleC HroleEtoEin0eritG1$-
$61$ isEroleFHroleEnameG1$-
$61( isEresourceFHresourceEnameG1$-
$61' addEresourceFAcl1esource HresourceG1$-
$61- addEresourceEaccessFHresourceC HaccessElistG1$-
$616 dro3EresourceEaccessFHresourceC HaccessElistG1$-
$617 allowFHroleC HresourceC HaccessG1$-
$619 den5FHroleC HresourceC HaccessG1$6
$611: isEallowedFHroleC HresourceC HaccessElistG1$6
$7 Aut01$7
$9 Programaci#n <odular1$9
(: 4so de Flas0 1(:
(:1 Flas0::error1(:
(:! Flas0::success1(:
(:$ Flas0::notice1(:
(:( Flas0::warning1(:
(1 "ntegrar F<A;G en Kumbia1(1
(11 &Bem3lo %encillo 1(1
(! 4so de Paquetes F*ames3acesG1($
($ 4sando AUAV1((
($1 "ntroducci#n 1((
($! V<LHtt31equest 1('
($$ );omo usar AUAV en Kumbia, 1('
($( linkEtoEremote 1(-
($' formEremoteEtag 1(6
(( Ua+a%cri3t 5 Kumbia1(9
((1 &l 8bBeto AUAV1(9
((! AUAV+iew1equest 1(9
(($ AUAV?ml1equest1':
((( AUAVe?ecute1'1
((' AUAVquer5 1'!
((- ABa?1equest 5 ABa?43dater1'!
((1 ABa?Periodical43dater1'$
(' %ession1'(
('1 </todos de la clase %ession 1'(
('11 %ession::setEdataFHnameC H+alorG 1'(
('1! %ession::getEdataFHnameC H+alorG 1'(
('1$ %ession::unsetEdataFHnameG 1'(
('1( %ession::issetEdataFHnameG 1'(
('1' %ession::setFHnameC H+alorG 1'(
('1- %ession::getFHnameC H+alorG 1'(
(- Loggers1''
(-1 </todos de la ;lase Logger 1'-
(-11 constructor 1'-
(-1! logFHmessageC Ht53eG 1'-
(-1$ beginFG1'-
(-1( commitFG 1'-
(-1' rollbackFG 1'-
(-1- close 1'-
(6 Protot53e en Kumbia1'6
(7 &fectos Aisuales 5 %cri3tAculo4s1'7
(71 &fectos Dsicos1'7
(711 &ffect83acit51'9
(71! &ffect%cale1'9
(71$ &ffect<or301-:
Libro de Kumbia: Porque Programar debera ser ms fcil 9
(71( &ffect<o+e1-:
(7! &fectos ;ombinados1-1
(7!1 &ffectA33ear1-1
(7!! &ffectFade1-1
(7!$ &ffectPuff1-!
(7!( &ffect>ro38ut1-!
(7!' &ffect%0ake1-!
((11 &ffect%witc08ff1-!
((1! &ffectDlind>own1-!
((1$ &ffectDlind431-$
((1( &ffect%lide>own1-$
(7$ <s "nformaci#n1-$
(9 Aentanas Protot53eWindows1-(
(91 4so de las Aentanas Protot53e1-(
(9! 1eferencia de ;lases 5 8bBetos de Protot53e Windows1--
(9$ ;lase Window1--
(9( &Bem3los de Protot53e Windows1-9
(9(1 Abriendo una Aentana %encilla1-9
(9(! Abrir una +entana usando una 41L1-9
(9($ Abre una +entana con un contenido e?istente16:
(9(( Abriendo una cuadro de dialogo usando AUAV161
(9(' Abrir un cuadro de >ialogo de Alerta161
': Funciones de 1e3ortes16!
':1 <anual de 1eferencia de FP>F 16!
':! ).u/ es FP>F, 16!
'1 ;orreo &lectr#nico16$
'11 ).u/ es PHP<ailer, 16$
'1! )Por qu/ usar 303mailer, 16$
'1$ PHP<ailer en Acci#n con Mmail16(
'! "ntegraci#n con %mart516'
'!1 ).u/ es %mart5, 16'
'!! ;omo se integra %mart5 a Kumbia 16-
'$ ;oders166
'$1 Acti+ar los ;oders 166
'$! Probar los coders 166
'$$ 4n eBem3lo 3rctico 166
'( Meneraci#n de Mrficas171
'!1 Libc0art en Acci#n17!
'' Pasos de Daile en Kumbia17$
'- ;reando tus 3ro3ios arc0i+os de configuraci#n ini17$
'-1 Leer la configuraci#n Actual17$
'-! Leer Arc0i+os &?cel con Kumbia17'
'-$ 4tili2ando la consola "nteracti+a iPHP176
'-$1 createEstandardformFHnombreG 177
'-$! createEmodelFHnombreG 177
'-$$ createEcontrollerFHnombreG 177
'-( Aalidar un 4suario179
'-' ;rear un 1e3orte usando FP>F19!
'-- ;ombos Actuali2ables con AUAV19(
'-6 ;ambiando el ;ontrolador 3or >efecto!::
'-7 >e+ol+iendo una salida V<L!::
'-9 4sar ;om3onentes &dici#n "n=Place!:!
'-1: ;reando un Li+e %earc0!:'
'6 Mlosario de ;once3tos!:6
'61 AUAV !:6
Libro de Kumbia: Porque Programar debera ser ms fcil 1:
'6! <odelo Aista ;ontrolador F<A;G !:6
'6$ Framework !:7
'6( Acti+e1ecord !:9
'6' %caffold FAndamiaBeG !:9
'6- Programaci#n 8rientada a 8bBetos !:9
'66 ;a3a de Abstracci#n de >atos !:9
'67 PHP !:9
'69 )Por qu/ Patrones, !1:
'7 J0e M*4 Meneral Public License FMPLG!1:
Libro de Kumbia: Porque Programar debera ser ms fcil 11
1 Agradecimientos
&ste manual es 3ara agradecer a quienes con su tiem3o 5 a3o5o en gran o en 3oca
medida 0an a5udado a que este framework sea cada da meBor
A todos ellos Mracias Jotales:
Andres Feli3e Mutierre2 gutierre2andresfeli3eXgmailcom
>ei+inson JeBeda dei+insonteBedaXkumbia303com
&milio %il+eira emiliorstXkumbia303com
;/sar ;aballero aka P0illi3o 30illi3oXkumbia303com
Y a toda la comunidad que rodea a KumbiaC con sus 3reguntasC notificaciones de errores
FDugTsGC a3ortacionesC etc
Libro de Kumbia: Porque Programar debera ser ms fcil 1!
2 "ntroducci#n
Kumbia naci# en un esfuer2o 3or no esfor2arme 3ara 0acer las cosas Puede sonar raro
3ero as fue 4n da em3ec/ a 0acer un 3ro5ecto de un sistema de informaci#n donde
0aban muc0os formularios 5 diBe: = &sta cosa siem3re es lo mismoC as que si 5o 0iciera
algo 3ara no re3etir tanto 5 s#lo escribir lo que cambiaba en cada formulario entonces
sera ms r3ido
>es3u/s de 0aber terminado las funciones 3ara generar los formularios me d cuenta que
0aban quedado mu5 bien 5 entonces lo em3ec/ 0a im3lementar en otras cosas As es
que Kumbia naci# de una a3licaci#n real 5 lo 3use a dis3osici#n de la ;omunidad
<i trabaBo era mu5 inde3endiente del obBeti+o de sistema de informaci#n que se iba a
desarrollar con los generadores de formulariosC as que me 3ro3use usarlo en otro
3ro5ecto &l resultado fue mu5 buenoC 0aba logrado desarrollar algo ms del 6:Z de un
sistema de informaci#n en tan s#lo unos das &ntonces me 3use a organi2ar las
funcionesC comentar el c#digo 5 meBorar la instalaci#n 3ara que 3udieran ser usadas en
otros 3ro5ectos
&n esa /3oca 3ro3use llamar el 3ro5ecto AuroraFormsC agregu/ alguna funcionalidad
e?tra 5 decid darle 3ro3aganda en algunos foros de "nternet .uise darle un tono
interesante al 3ro5ecto 3romulgu/ las facilidades que ofreca 5 3use un demo 3ara que
otros 3udieran comentar sobre /l
&s3eraba que muc0a gente se interesaraC 3ero lo [nico que logr/ fue muc0as crticas
Oconstructi+asP &l 3ro5ecto no tena documentaci#n as que era como decirles miren lo
que s/ 0acerC 3ero no les digo c#mo usarlo *o era mi intenci#n 3ero fue un error
3ublicar sin documentar "gualmente es necesario 0acer muc0as cosas 3ara crear un
3ro5ecto de software libre 5 no 3ens/ que tu+iera que tener en cuenta tantas cosas 3ara
que as fuese
8tro 3aso im3ortante fue acoger la licencia M*4@MPL en +e2 de otraC como la D%> o la
<"JC que aunque son menos restricti+as no fa+orecen el mo+imiento del software libre 5
eso es algo que quise transmitir con el 3ro5ecto
Pienso que el software libre 3ermite crear el ambiente de colaboraci#n ideal que quera
lograr con el 3ro5ectoC liberar las ideas 3ermite que otros inter+engan 5 busquen el
camino ideal es3erando a3ortar 5 a5udar con algo que le 3ueda ser+ir a toda la
comunidad
Duscar la meBor forma de 0acer las cosas a +eces 3uede resultar difcilC 3ues si
encontramos algunaC que 3robablemente 3are2ca la meBorC no siem3re es ace3tada 3or
los dems 5 terminan rec0a2ando las ideas que queremos +enderC as demos todos los
argumentos del caso
Jiem3o des3u/s fui contratado 3ara desarrollar un software algo grande 5 que
3atrocinaba el esfuer2o de trabaBar en Kumbia &l resultado fue mu5 buenoC siem3re me
em3e\o en dar lo meBor cuando trabaBo en un 3ro5ectoC as que el framework em3e2# a
crecer 5 la funcionalidad agregada forma gran 3arte de lo que 0o5 es como tal
Libro de Kumbia: Porque Programar debera ser ms fcil 1$
JrabaBar en una a3licaci#n real con caractersticas +erstiles increment# la estabilidad 5
las soluciones creadas 3ara necesidades reales aument# su funcionalidad
Alg[n tiem3o des3u/s fue agregado el 3ro5ecto a sourceforgenet 5 esto tambi/n 0a sido
un gran logro 3ara 3osicionarlo como un 3ro5ecto serio 5 con futuro Las 0erramientas
3ro3orcionadas en este forge dieron 3ie 3ara em3e2ar a meBorar muc0os as3ectos que
estu+ieron centrali2ados 3or muc0o tiem3o &l 3ro5ecto a0ora 3osee muc0as
caractersticas que 0an a5udado a su crecimiento como 3or eBem3lo los muc0os
ser+idores que re3lican Kumbia en todo el mundoC el sistema de gesti#n de bugsC el s+n 5
el ms reciente dominio kumbia303com
<uc0as 3ersonas 0an sido tambi/n fundamentales 3ara le+antar este 3ro5ecto sin dudaC
la colaboraci#n tanto en a3o5o econ#micoC moralC de desarrolloC moti+aci#n a usuariosC
testeo de funcionesC sugerencias 5 3ruebas 0an contribuido a lo que es el 3ro5ecto 0o5
como tal
Aun en el auge de las frameworkTs 3ara 303 5 otros lenguaBesC Kumbia fue 3ensado
desde un 3unto de +ista mu5 diferente Al 3asar de los das el obBeti+o de este 3ro5ecto
se +ol+a cada +e2 ms claro Kumbia deba ser 3otente como 3ara desarrollar 3ro5ectos
a ni+el em3resarial] 3ero al mismo tiem3o sencilloC tanto que 0asta alguien que
em3e2ara a desarrollar en PHP 3udiera ado3tarlo como 0erramienta de trabaBo
saltndose muc0os das de leer 5 releer tutoriales de 3rinci3iantes
&s mu5 moti+ante cuando dicen que nuestro trabaBo es Ofcil de usarPC O3rcticoP o O[tilP
5a que se 0a logrado satisfacci#n colecti+a La moti+aci#n engranada con el deseo de
0acer las cosas bien es algo que busco constantemente
Pienso que los lmites de la com3utaci#n em3e2aron a +erse mu5 leBanos cuando el
"nternet entr# en furorC 3ara m creo que marc# lo que siem3re 0a sido mi +isi#n de lo
que quiero Programar 3ara "nternet es mi constante 5 la 3reocu3aci#n 3or a3render 5
meBorar es el 3ilar de todo lo que 0ago 3ara /l
Programar fcil es im3ortante ;uando escribo c#digoC 3rimero sue\o 5 luego trabaBo 3or
ese sue\o &scribo c#digo 3ensando si esto fuera tan s#lo estoC entonces 5a 0ubiera
terminado sin 0acer casi nada Luego dedico +arias 0oras 3ara que ese 3oquito 0aga
todo lo que tiene que 0acer sin da\ar la fantasa Luego me d cuenta que as funciona
todo 5 que muc0as cosas nos tocan fciles 3or el trabaBo so\ador de otros
>e3ende de la culturaC se 3ueden rec0a2ar una 3ro3uesta cuando 3arece mu5 alocada o
inalcan2able 3ara el medio en la que se 3lantea &ncontrar las 3ersonas que tengan
suficiente e?3eriencia o necesidad 3ara a3o5ar ideas o contribuir con el meBoramiento de
/stas 3uede ser una larga tareaC 3ero cuando las encuentrasC te moti+as a continuar 5 a
meBorarC 3orque 3iensas que 3uede ser [til 3ara alguien ms
;on esta introducci#n es3ero se 0a5a interesado 3or este libro 5 3or este 3ro5ecto que
tambi/n fue 3ensado 5 desarrollado 3ara alguien como usted
Libro de Kumbia: Porque Programar debera ser ms fcil 1(
3 %obre &l Libro de Kumbia
&l libro de Kumbia es un intento 3or comunicar todo lo que este framework 3uede 0acer
3or usted Le 3ermite descubrir todos los rincones 5 a3render 3or qu/ Kumbia 3uede ser
la 0erramienta que estaba es3erando 3ara em3e2ar a desarrollar su 3ro5ecto
;umbia es el nombre de un ritmo musical del ;aribe 5 Kumbia es un 3roducto
colombiano 3ara el mundo Programar debe ser tan bueno como bailar 5 Kumbia es un
baileC un baile 3ara 3rogramar
;ada da el libro sigue tomando +alor gracias a los a3ortes de la comunidad
NOTA: Este libro se tratan los nuevos avances de la versin 0.5 de kumbia, de
la misma orma se a!radece a la comunidad "ue acom#a$a a este rame%ork,
"ue notii"uen las me&oras de manera "ue el #ro'ecto si!a creciendo.
Libro de Kumbia: Porque Programar debera ser ms fcil 1'
( )*ue+o en uso de Frameworks,
(.1 )*u+ ,ace un -rame%ork.
>efine una Filosofa de JrabaBo
Pro3orciona libreras 5 funciones que deberan 0acer la +ida del 3rogramador ms
feli2
A0orrar trabaBo 5 tiem3o
Producir a3licaciones ms fciles de mantener
&+itar c#digo du3licado
;rear A3licaciones <ulti=;a3a
(.2 /eali0ar a#licaciones orientadas a 1suarios
Preocu3arse 3or interfacesC l#gica 5 3rocesos ms intuiti+os 5 3rcticos 3ara
usuarios
4sar frameworks 3ara e+itar estar 3ensando en los OdetallesP 5 facilitar el trabaBo
Duscar en qu/ manera 3odra ser ms fcilC sin que aumente el trabaBo
considerablemente
Atacar necesidades reales 5 no desarrollar en su3uestos de utilidad
%er fantico de la 3roducti+idad
(.3 )2or "u+ 3umbia ' no otro -rame%ork.
"m3lementa los meBores 3atrones de 3rogramaci#n orientados a la Web
Fomenta la utili2aci#n de caractersticas Web !: en nuestro software
Hace la ma5or 3arte del trabaBo 5 se ocu3a de los OdetallesP
<antener una a3licaci#n es ms fcil
&s software libreC 3or lo tanto obtiene todas las +entaBas que /ste 3ro3orciona
%u >ocumentaci#n esta 3rinci3almente en es3a\ol
Libro de Kumbia: Porque Programar debera ser ms fcil 1-
5 %obre Kumbia
Kumbia es un web framework libre escrito en PHP' Dasado en las meBores 3rcticas de
desarrollo webC usado en software comercial 5 educati+oC Kumbia fomenta la +elocidad 5
eficiencia en la creaci#n 5 mantenimiento de a3licaciones webC reem3la2ando tareas de
codificaci#n re3etiti+as 3or 3oderC control 5 3lacer
%i 0a +isto a 1ub5=1ails@P5t0on=>Bango encontrar a Kumbia una alternati+a 3ara
3ro5ectos en PHP con caractersticas como:
%istema de Plantillas sencillo
Administraci#n de ;ac0/
%caffolding A+an2ado
<odelo de 8bBetos 5 %e3araci#n <A;
%o3orte 3ara AUAV
Meneraci#n de Formularios
;om3onentes Mrficos
%eguridad
5 muc0as cosas ms Kumbia 3uede ser la soluci#n que est buscando
&l n[mero de 3rerrequisitos 3ara instalar 5 configurar es mu5 3eque\oC a3enas 4ni? o
Windows con un ser+idor web 5 PHP' instalado Kumbia es com3atible con motores de
base de datos como <5%.LC Postgre%.L 5 8racle
4sar Kumbia es fcil 3ara 3ersonas que 0an usado PHP 5 0an trabaBado 3atrones de
dise\o 3ara a3licaciones de "nternet cu5a cur+a de a3rendi2aBe est reducida a un da &l
dise\o lim3io 5 la fcil lectura del c#digo se facilitan con Kumbia >esarrolladores 3ueden
a3licar 3rinci3ios de desarrollo como >1YC K"%% o VPC enfocndose en la l#gica de
a3licaci#n 5 deBando atrs otros detalles que quitan tiem3o
Kumbia intenta 3ro3orcionar facilidades 3ara construir a3licaciones robustas 3ara
entornos comerciales &sto significa que el framework es mu5 fle?ible 5 configurable Al
escoger Kumbia esta a3o5ando un 3ro5ecto libre 3ublicado baBo licencia M*4@MPL
Libro de Kumbia: Porque Programar debera ser ms fcil 16
4 Kumbia en su Punto
4.1 5ntroduccin
Kumbia es un framework PHP' basado en el modelo <A; Permite la se3araci#n de las
reglas de negocioC l#gica de a3licaci#n 5 +istas de 3resentaci#n de una a3licaci#n web
Adems 3osee otras 0erramientas 5 clases que a5uden a acortar el tiem3o de desarrollo
de una a3licaci#n web
4.2 )*u+ es un -rame%ork.
&n el desarrollo de softwareC un framework es una estructura de so3orte definida en la
cual otro 3ro5ecto de software 3uede ser organi2ado 5 desarrollado J3icamenteC un
framework 3uede incluir so3orte de 3rogramasC libreras 5 un lenguaBe de scri3ting entre
otros software 3ara a5udar a desarrollar 5 unir los diferentes com3onentes de un
3ro5ecto
4n framework agrega funcionalidad e?tendida a un lenguaBe de 3rogramaci#n] /staC
automati2a muc0os de los 3atrones de 3rogramaci#n 3ara orientarlos a un determinado
3ro3#sito 4n framework 3ro3orciona una estructura al c#digo 5 0ace que los
desarrolladores escriban c#digo meBorC ms entendible 5 mantenible Adems 0ace la
3rogramaci#n ms fcilC con+irtiendo com3leBas funciones en sencillas instrucciones
&st usualmente escrito en el lenguaBe que e?tiende Kumbia est escrito en PHP'
4n framework 3ermite se3arar en ca3as la a3licaci#n &n generalC di+ide la a3licaci#n en
tres ca3as:
La l#gica de 3resentaci#n que administra las interacciones entre el usuario 5 el
software
La L#gica de >atos que 3ermite el acceso a un agente de almacenamiento
3ersistente u otros
La l#gica de dominio o de negocioC que mani3ula los modelos de datos de acuerdo
a los comandos recibidos desde la 3resentaci#n
Los Web framework 3retenden facilitar el desarrollo de A3licaciones web F sitios webC
intranetsC etcG PHP es conocido 3or su sim3licidad 5 es am3liamente usado en este
cam3o %#lo PHP 3uede utili2ar casi cualquier motor de base de datosC administrar
sesionesC acceder a arc0i+os del ser+idorC etcC 3ero cuando las a3licaciones crecen 5 su
com3leBidad aumenta un framework sol+enta muc0os 3roblemas 5 facilita muc0as tareas
Libro de Kumbia: Porque Programar debera ser ms fcil 17
6 Kumbia +s 8tros Frameworks
&n un mercado inundado de frameworks <A; que 3rometen ser la soluci#n de desarrollo
a cualquier ti3o de 3ro5ectoC Kumbia 3retende ser una soluci#n a cualquier ti3o de
3ersona desde el 3rinci3ianteC 3asando 3or el desarrollador que no tiene tiem3o 3ara
a3render un nue+o frameworkC 0asta la em3resa de desarrollo de software Lo
im3ortante es que e?ista una necesidad 5 que Kumbia 3ueda a5udarte a 0acerla
realidad
Kumbia es inno+ador 5 su 3rinci3al enfoque es desarrollar 0erramientas 5 escribir cada
com3onente del framework 3ensando en que sea fcil de usar 3ara cualquiera que lea su
documentaci#n
;ualquier framework 3ara la Web res3etable tiene una a3licaci#n del 3atr#n <A;C un
81< F<a3eo obBeto relacionalGC generaci#n de logsC enrutamientoC 3lantillasC facilidades
Ba+ascri3tC uso de aBa? 5 otras cosillas ms &ntoncesC )cul es la diferencia, La
diferencia est en cunto tiem3o dedicas a leer su documentaci#nC cuntas +eces debes
recurrir a ellaC cuntas +eces debes recordar sinta?is com3leBaC 5 lo ms im3ortante:
)>es3u/s de cunto tiem3o obtienes resultados,
Je in+itamos a com3arar a Kumbia con otros frameworks 5 darte cuentaC c#mo usando
otras 0erramientasC escribes ?C 5C 2 c#digoC 0aces 1C !C $C etc 3asos 3ara 0acer una
sim3le tarea 5 c#mo en Kumbia esto est reducido a su mnima unidad con lo que te
0aces ms 3roducti+oC a3rendes ms r3ido 5 das meBores soluciones antici3ndote a la
com3etencia
Libro de Kumbia: Porque Programar debera ser ms fcil 19
7 ).u/ es Kumbia,
Kumbia es un esfuer2o 3or 3roducir un framework que a5ude a reducir el tiem3o de
desarrollo de una a3licaci#n web sin 3roducir efectos sobre los 3rogramadores
&st basado en los siguientes conce3tos:
;om3atible con muc0as 3lataformas
Fcil de instalar 5 configurar
Fcil de a3render
Listo 3ara a3licaciones comerciales
;on+enci#n sobre ;onfiguraci#n
%im3le en la ma5or 3arte de casos 3ero fle?ible 3ara ada3tarse a casos ms
com3leBos
%o3ortar muc0as caractersticas de A3licaciones Web Actuales
%o3ortar las 3racticas 5 3atrones de 3rogramaci#n mas 3roducti+os 5 eficientes
Producir a3licaciones fciles de mantener
Dasado en %oftware Libre
&l 3rinci3al 3rinci3io es 3roducir a3licaciones que sean 3rcticas 3ara el usuario final 5 no
s#lo 3ara el 3rogramador La ma5or 3arte de tareas que le quiten tiem3o al desarrollador
deberan ser automati2adas 3or Kumbia 3ara que /l 3ueda enfocarse en la l#gica de
negocio de su a3licaci#n *o deberamos rein+entar la rueda cada +e2 que se afronte un
nue+o 3ro5ecto de software
Para satisfacer estos obBeti+os Kumbia est escrito en PHP' Adems 0a sido 3robado en
a3licaciones reales que trabaBan en di+ersas reas con +ariedad de demanda 5
funcionalidad &s com3atible con las bases de datos dis3onibles actuales mas usadas:
<5%.L
Postgre%.L
8racle
&l modelo de obBetos de Kumbia es utili2ado en tres diferentes ca3as:
Abstracci#n de la base de datos
<a3eo 8bBeto=1elacional
<odelo <A; F<odeloC AistaC ;ontroladorG
;aractersticas comunes de A3licaciones Web son automati2adas 3or Kumbia:
Plantillas FJem3lateAiewG
Aalidaci#n de Formularios
Administraci#n de ;ac0/
%caffolding
"nteracci#n AUAV
Meneraci#n de Formularios
&fectos Aisuales
%eguridad
Libro de Kumbia: Porque Programar debera ser ms fcil !:
Kumbia utili2a otros 3ro5ectos de software libre 3ara com3lementar su funcionalidad:
FP>F: 1e3ortes en formato P>F
Protot53e: Ua+ascri3t crossbrowser
%cri3taculous: &fectos +isuales
PHP<ailer: ;orreo &lectr#nico
%mart5: <otor de Plantillas 3otente 5 fcil de usar
Se tiene previsto que para la version 0.6 del framwork se migre de framework para el
manejo de AJAX hacia JQuer.
Libro de Kumbia: Porque Programar debera ser ms fcil !1
8 )&st 0ec0o kumbia 3ara m,
*o im3orta si usted es el e?3erto en PHP' o un 3rinci3ianteC lo que im3orta es el tama\o
del 3ro5ecto que quiera desarrollar %i +a a crear un software 3eque\o de ms o menos
1: 3ginas con acceso limitado a bases de datosC sin obligaci#n en desem3e\o 5
dis3onibilidadC entonces 3uede utili2ar PHP sin Kumbia
;on Kumbia 3uede crear a3licaciones grandes o medianasC con l#gica de negocios
com3leBa 5 alta dis3onibilidad en donde PHP soloC no sera suficiente
%i 3lanea mantener o e?tender sus a3licaciones en el futuro 5 necesita c#digo
li+ianoC entendible 5 efecti+o
%i desea dedicar tiem3o al dise\o 5 usabilidad de su a3licaci#n 5 ol+idarse de los
detalles
%i desea usar las [ltimas caractersticas en interacci#n con el usuario Fcomo AUAVG
en forma intuiti+a sin tener que escribir cientos de lneas de Ua+a%cri3t
%i quiere desarrollar r3ido 5 con buena calidad
&n estos casos Kumbia est 0ec0o 3ara usted
Libro de Kumbia: Porque Programar debera ser ms fcil !!
10 *ue+e 1a2ones 3ara 4sar Kumbia
19 Es mu' -:cil de 1sar: &m3e2ar con Kumbia es demasiado fcilC es s#lo
descom3rimir 5 em3e2ar a trabaBar
29 /ealmente A!ili0amos Traba&o ;rear una a3licaci#n mu5 funcional con KumbiaC es
cuesti#n de 0oras o minutosC as que 3odemos darle gusto a nuestros clientes sin que
afecte nuestro tiem3o Mracias a las m[lti3les 0erramientas que 3ro3orciona el
framework 3ara agili2ar el trabaBo 3odemos 0acer ms en menos tiem3oC
39 ;e#arar la <!ica de la 2resentacin. 4na de las meBores 3rcticas de desarrollo
orientado a la Web es se3erar la l#gicaC de los datos 5 la 3resentaci#nC con Kumbia es
sencillo a3licar el 3atr#n <A;F<odeloC AistaC ;ontroladorG 5 0acer nuestras a3licaciones
mas fciles de mantener 5 de crecer
(9 /educcin del uso de otros <en!ua&es: Mracias a los Hel3ers 5 a otros 3atrones
como Acti+e1ecord e+itamos el uso de lenguaBes %.L o HJ<L Fen menor 3orcentaBeGC 5a
que Kumbia 0ace esto 3or nosotrosC con esto logramos c#digo mas claroC natural 5 con
menos errores
59 =3umbia ,abla Es#a$ol>: La documentaci#nC mensaBes de errorC arc0i+os de
configuraci#nC comunidadC desarrolladoresC KK0ablan es3a\olLLC con esto no tenemos que
entender a medias otros Frameworks o quedarnos cru2ados de manos 3orque no
3odemos 3edir a5uda
49 A#render a usar 3umbia es cuestin de 1 d?a: ;uando Leemos toda la
documentaci#n no tardamos ms de 1 daC esto nos 3ermite ado3tar todo su 3oder sin
3erder tiem3o le5endo largas guas
69 ;in darnos cuenta a#licamos los 2atrones de dise$o de moda: Los 3atrones de
dise\o son 0erramientas que facilitan el trabaBo reali2ando abstracci#nC reduciendo
c#digo o 0aciendo ms fcil de entender la a3licaci#n ;uando trabaBas en Kumbia
a3licas muc0os 3atrones 5 al final te das cuenta que eran mas fciles de usar de lo que
se escuc0aban
79 3umbia es sot%are <ibre: *o tienes que 3reocu3arte 3or licenciar nadaC Kumbia
3romue+e las comunidades de a3rendi2aBeC el conocimiento es de todos 5 cada uno sabe
c#mo a3ro+ec0arlo meBor
89 A#licaciones /obustas, )no sab?a "ue ten?a una.: A3licaciones em3resariales
requieren arquitecturas robustasC Kumbia 3ro3orciona una arquitectura fcil de a3render
5 de im3lementar sin com3licarnos con conce3tos raros o rebuscados
Libro de Kumbia: Porque Programar debera ser ms fcil !$
11 "nstalando Kumbia
11.1 2rerre"uisitos
&s necesario instalar el la mquina con Windows !:::@VP@!::$ # Linu?@4*"V un
ser+idor Web A3ac0e en cualquier +ersi#n
Puedes utili2ar ""% con "sa3iE1ewrite instalado
"nstalar PHP'^ Frecomendado '!G 5 alg[n motor de base de datos so3ortado si se
necesitase
11.2 5nstalando
Kumbia se distribu5e en un 3aquete com3rimido listo 3ara usar %e 3uede descargar la
[ltima +ersi#n de 0tt3:@@kumbiasourceforgenet
&l nombre del 3aquete tiene un nombre como kumbia=+ersion=notesformatoC 3or
eBem3lo: kumbia@0.(.(.tar.!0
%e co3ia el 3aquete al directorio ra2 del ser+idor web
Windows: c:\Apache2\htdocs\ o c:\wamp\www
Linux: /srv/www/htdocs, /var/www/html o /var/www
%e descom3rime 5 crea un directorio kumbia@0.(.( que 3uede ser renombrado 3or el
nombre de nuestro 3ro5ecto
11.3 Aoni!uracin de A#ac,e
Kumbia utili2a un m#dulo llamado modErewrite 3ara la utili2aci#n de 41L% ms
entendibles 5 fciles de recordar en nuestras a3licaciones Por estoC el m#dulo debe ser
configurado e instalado en A3ac0e Para estoC debe c0equear que el m#dulo est/
0abilitado
Para 0abilitar el m#dulo distribuciones M*4@Linu?
_ a!enmod rewrite
Luego debemos editar el arc0i+o de configuracion de a3ac0eC esto con la finalidad que el ser+idor
web tenga la ca3acidad de leer los arc0i+os .,taccess, en la +ersion !!? de a3ac0e el arc0i+o se
encuentra BetcBa#ac,e2Bsites@availableBdeault
Libro de Kumbia: Porque Programar debera ser ms fcil !(
5normacin: %i desea instalar la ultima beta de
Kumbia debe ingresar al gru3o en google 5
descargarlo de los arc0i+os del gru3o &n
0tt3:@@grou3sgooglecom@grou3@kumbia
<Directory />
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
&n el >ocument1oot F>irectorio 1a2 de A3ac0eG debe lle+ar la o3ci#n Allo%Override All
3ara que A3ac0e lea el arc0i+o .,taccess 5 llame a modCre%rite.
Posterior a esto 0a5 que indicar al ser+idor web cual ser el orden de 3referencias en
cuanto a los arc0i+os inde?C 3or defecto en 3rimer orden se eBecutan los arc0i+os
indeD.,tml esto 0a5 que cambiarlo 3or indeD.#,#
&n +ersion !!? de a3ac0e solo 0a5 que editar el arc0i+o que se encuentra
BetcBa#ac,e2Bmods@enabledBdir.con
1. DirectoryIndex index.php index.html ...
11.3.1 )2or "u+ es im#ortante Eod@/e%rite.
1eWrite es un m#dulo de a3ac0e que 3ermite reescribir las urls que 0an utili2ado
nuestros usuarios a otras ms com3licadas 3ara ellos Kumbia enca3sula esta
com3leBidad 3ermiti/ndonos usar 41L% bonitas o lim3ias como las que +emos en blogs o
en muc0os sitios donde no a3arecen los , # los ` o las e?tensiones del ser+idor F303C
as3C as3?C etcG
Adems de estoC con mod=rewriteC kumbia 3uede 3roteger nuestras a3licaciones ante la
3osibilidad de que los usuarios 3uedan +er los directorios del 3ro5ecto 5 3uedan acceder
a arc0i+os de clasesC modelosC l#gicaC etcC sin que sean autori2ados
;on mod=rewrite el [nico directorio que 3ueden +er los usuarios es el contenido del
directorio 3ublicC el resto 3ermanece oculto 5 s#lo 3uede ser +isuali2ado cuando 0a
reali2ado una 3etici#n en forma correcta 5 tambi/n es correcto seg[n nuestra l#gica de
a3licaci#n
;uando escribes direcciones utili2ando este ti3o de 41LsC ests a5udando tambi/n a los
motores de b[squeda a inde?ar meBor tu informaci#n
!"#A$ Se tra%aja actualmente para que este requisito no sea indispensa%le& se
estima que esta mejora ser' incorporada en la versi(n 0.6 del framework& de
manera que se pueda utili)ar el framework en servidores compartidos o en
aquellos hosting que no ofrecen este m(dulo de apache
Libro de Kumbia: Porque Programar debera ser ms fcil !'
11.( Aoni!uracin de 2F2
Actualmente Kumbia no necesita configuraciones es3eciales de PHP
11.5 2or"ue 3umbia utili0a 2F25.
Kumbia trabaBa s#lo con PHP' PHP' es la +ersi#n ms a+an2adaC estable 5 es el futuro
de este lenguaBe Posee un so3orte ms com3leto a la orientaci#n a obBetosC iteradoresC
e?ce3ciones 5 un so3orte a ?ml ms 3otente
4suarios que quieran dar un toque realmente 3rofesional a sus a3licaciones sabrn
+alorar las cualidades de PHP' 5 abandonarn el uso de PHP( Alguna +e2 se 3ens# en
desarrollar una +ersi#n es3ecifica de Kumbia 3ara PHP(C sin embargo esto era dar un
3aso atrs
Ho5 en daC el ma5or 3roblema que tiene PHP' es el 3aso a ser+idores de 0osting
com3artido con esta +ersi#nC que 0o5 en da mantienen com3atibilidad con PHP(C 5a que
el cambio generara 3roblemas con a3licaciones e?istentes en ellas Pero esto 3oco a
3oco se deBa atrs 5 cada +e2 ms ser+idores tienen la ultima +ersi#n de PHP
11.4 Aoni!uracin de E';*<
;uando se utili2a una base de datos <Y%.L' debe +erificarse que el sqlEmode no est/ en
modalidad estricta Para +alidar esto debe ingresar a la lnea de comando de <Y%.L':
m5sql =0 local0ost =u root =3
5 luego eBecutar el siguiente select:
m5sqlI select XXglobalsqlEmode]
>e3endiendo de la configuraci#n que tenga le dar un resultado 3arecido a esto:
^=============================================== ^
a XXglobalsqlEmode a
^=============================================== ^
a %J1";JEALLEJADL&% a
^=============================================== ^
Para cambiar este 3armetroC a uno adecuado al frameworkC debe eBecutar el siguiente comando:
m5sqlI set Qglobal a sessionR sqlEmode S ]
o cambiar la configuraci#n del arc0i+o m'.ini en su sistema o3erati+o
Para +er otros 3armetros +er el siguiente enlace Q1R
11.6 5nstalacin ' Aoni!uracin con Oracle
Kumbia trabaBa con la e?tensi#n de PHP 8;"7 &stas funciones le 3ermiten acceder a
bases de datos 8racle 1:C 8racle 9C 8racle 7 5 8racle 6 usando la "nterfa2 de Llamados
8racle F8;" 3or sus siglas en "ngl/sG &llas so3ortan la +inculaci#n de +ariables PHP a
Libro de Kumbia: Porque Programar debera ser ms fcil !-
reci3ientes 8racleC tienen so3orte com3leto L8DC F"L& 5 18W">C 5 le 3ermiten usar
+ariables de definici#n entregadas 3or el usuario
Para que 8;"7 trabaBe es necesario instalar el cliente instantneo de oracle
Luego 0a5 que agregar a la +ariable de entorno PAJH del sistema la ruta a donde
fue descom3rimido el cliente instantneo 2ATFGH2ATF
HIc:Jinstantclient10C2J
1einiciar A3ac0e
11.7 Ketalles Es#ec?icos #ara ;O
"nstalando Kumbia en VA<PP en Windows
&l 3rocedimiento 3ara instalar VA<PP en Windows es el siguiente:
1 >escargar VA<PP de A3ac0e Friends
! "nstalar VA<PP
b Habitilitar "nstalar A3ac0e 5 <5%.L como %er+icio
$ &ditar el arc0i+o c:\Archivos de Programa\xampp\apache\conf\httpd.conf
( >escomentar L"uitar el M9 de la lnea donde dice:
LoadModule rewrite_module modules/mod_rewrite.so
' 1einiciar el ser+icio de A3ac0e desde el Panel de ;ontrol de VA<PP
- ;o3iar el 3aquete de Kumbia a:
c:\Archivos de Programa\xampp\apache\htdocs\
6 ;ontinuar *ormalmente
"nstalando Kumbia en VA<PP en M*4@Linu?
&l 3rocedimiento 3ara instalar VA<PP en cualquier distribuci#n M*4@Linu? es el siguiente:
1 >escargar VA<PP de A3ac0e Friends
! "nstalar VA<PP
$ ;o3iar el 3aquete de 3umbia a Bo#tBlam##B,tdocsB
( ;ontinuar la instalaci#n normalmente
"nstalando Kumbia en >ebian@4buntu Linu?
"nstala A#ac,e2NE';*<5N2F25 si no lo tienes instalado usando la gua en este blog o
en 4buntu=es
&n KebianB1buntu tienes que usar el comando 3ara 0abilitar modCre%rite en A#ac,e:
1. # a2enmod rewrite
5 luego en editas el arc0i+o:
/etc/apache2/sites-enabled/000-default
Duscas la lnea 3ara el directorio BvarB%%% donde dice: Allow"verride !one 5 cambiar
3or Allow"verride All
Libro de Kumbia: Porque Programar debera ser ms fcil !6
Advertencia: &n 8racle la funcionalidad limit 3odra no
funcionar como se es3era 4tilice la condici#n
rownum c numeroEfilas 3ara 0acer esto.
1einicias A3ac0e con:
# /etc/init.d/apache2 restart
;ontinuar normalmente
12 ;reaci#n de Pro5ectos
12.1 5ntroduccin
&n Kumbia un 3ro5ecto es un conBunto de ser+icios que com3arten un nombre de
dominio 5 un conBunto de modelos de datos
&n un 3ro5ecto las o3eraciones estn l#gicamente agru3adas en controladoresC /stos
3ueden trabaBar inde3endientemente o de forma distribuida con los otros del mismo
3ro5ecto
Probablemente una a3licaci#n contenga al menos ! controladores que administren el
front 5 el back office de un 3ro5ecto
4n controlador re3resenta una o ms 3ginas con un mismo 3ro3#sito &Bem3lo:
<antenimiento de ;lientes
Los controladores 3oseen un conBunto de acciones &llos re3resentan las di+ersas
o3eraciones que se 3ueden reali2ar dentro de un controlador Por eBem3lo: ;rear
;lientesC Actuali2arlosC 1e+isar su ;arteraC etc
%i 3arece que muc0os controladores aumenten la com3leBidad de una a3licaci#nC
entonces se 3odran mantener agru3ados en uno soloC esto lo mantiene sim3le ;uando
la a3licaci#n cre2ca entonces se 3ueden agru3ar en otros controladores l#gicos
12.2 5niciar un 2ro'ecto
0tt3:@@wwwassemblacom@wiki@s0ow@kumbia@Parte1=;a3itulo(
12.3 >irectorios de Kumbia
0tt3:@@wwwassemblacom@wiki@s0ow@kumbia@Parte1=;a3itulo(
12.( 8tros >irectorios
0tt3:@@wwwassemblacom@wiki@s0ow@kumbia@Parte1=;a3itulo(
12.5 1esumen
%i 3ensamos en con+enci#n sobre configuraci#nC entonces 3odemos tambi/n 3ensar que
mientras todo est/ en su lugarC meBorar el orden de la a3licaci#n 5 ser ms fcil
encontrar 3roblemasC 0abilitar@in0abilitar m#dulos 5 en sntesis mantener la a3licaci#n
Libro de Kumbia: Porque Programar debera ser ms fcil !7
13 &?3licando la ;onfiguraci#n
13.1 5ntroduccin
Kumbia 3osee una configuraci#n 3or defecto que debe funcionar bien en la ma5or 3arte
de casos aunque /sta 3uede 3ersonali2arse de acuerdo a necesidades es3ecficas de
cada 3ro5ecto
%e 0a 3ensado en configurar al mnimo 3ara 3oder em3e2ar 0a trabaBar 5 deBar que
Kumbia escoBa la configuraci#n ms #3tima
Kumbia utili2a arc0i+os formato ini 3ara 0acer la configuraci#n
,tt#:BB%%%.assembla.comB%ikiBs,o%BkumbiaB2arte1@Aa#itulo(
1( A 3artir de un <odelo <A;
&n 1969C Jr5g+e 1eenskaug desarroll# una arquitectura 3ara desarrollar a3licaciones
interacti+as &n este dise\o e?istan tres 3artes: modelosC +istas 5 controladores
&l modelo <A; 3ermite 0acer la se3araci#n de las ca3as de interfa2C modelo 5 l#gica de
control de /sta La 3rogramaci#n 3or ca3asC es un estilo de 3rogramaci#n en la que el
obBeti+o 3rimordial es la se3araci#n de la l#gica de negocios de la l#gica de dise\oC un
eBem3lo bsico de esto es se3arar la ca3a de datos de la ca3a de 3resentaci#n al usuario
La +entaBa 3rinci3al de este estiloC es que el desarrollo se 3uede lle+ar a cabo en +arios
ni+eles 5 en caso de alg[n cambio s#lo se ataca al ni+el requerido sin tener que re+isar
entre c#digo me2clado Adems 3ermite distribuir el trabaBo de creaci#n de una
a3licaci#n 3or ni+elesC de este modoC cada gru3o de trabaBo est totalmente abstrado
del resto de ni+elesC sim3lemente es necesario conocer la AP" F"nterfa2 de A3licaci#nG que
e?iste entre ni+eles La di+isi#n en ca3as reduce la com3leBidadC facilita la reutili2aci#n 5
acelera el 3roceso de ensamblar o desensamblar alguna ca3aC o sustituirla 3or otra
distinta F3ero con la misma res3onsabilidadG
&n una a3licaci#n Web una 3etici#n se reali2a usando HJJP 5 es en+iado al controlador
&l controlador 3uede interactuar de muc0as formas con el modeloC luego el 3rimero llama
a la res3ecti+a +ista Finterfa2 de usuarioG la cual obtiene el estado del modelo 5 lo
muestra al usuario en una res3uesta HJJP
Libro de Kumbia: Porque Programar debera ser ms fcil !9
15 &?3licando la "m3lementaci#n <A;
15.1 "ntroducci#n
Kumbia a3ro+ec0a los meBores 3atrones de 3rogramaci#n orientada a la web en es3ecial
el 3atr#n <A; F<odelosC AistaC ;ontroladoresG &ste ca3tulo describe el funcionamiento
general de este 3aradigma en Kumbia
&l obBeti+o de este 3atr#n es el reali2ar 5 mantener la se3araci#n entre la l#gica de
nuestra a3licaci#nC los datos 5 la 3resentaci#n &sta se3araci#n tiene algunas +entaBas
im3ortantesC como:
Podemos identificar ms fcilmente en qu/ ca3a se est 3roduciendo un 3roblema
con s#lo saber su naturale2a
Podemos crear +arias 3resentaciones sin necesidad de escribir +arias +eces la
misma l#gica de a3licaci#n
;ada 3arte funciona inde3endiente 5 cualquier cambio centrali2a el efecto sobre
las demsC as que 3odemos estar seguros que una modificaci#n en un
com3onente reali2ar bien las tareas en cualquier 3arte de la a3licaci#n
Libro de Kumbia: Porque Programar debera ser ms fcil $:
15.2 Aonce#tos
La base de Kumbia es el EOAC un tradicional 3atr#n de dise\o que funciona en tres
ca3as:
Eodelos: 1e3resentan la informaci#n sobre la cual la a3licaci#n o3eraC su l#gica
de negocios
Oistas: Aisuali2an el modelo usando 3ginas Web e interactuando con los usuarios
de /stas
Aontroladores: 1es3onden a acciones de usuario e in+ocan cambios en las +istas
o en los modelos seg[n sea necesario
&n Kumbia los controladores estn se3arados en 3artesC llamadas front controller 5 un en
un conBunto de acciones ;ada acci#n sabe c#mo reaccionar ante un determinado ti3o de
3etici#n Las +istas estn se3aradas en la5outsC tem3lates 5 3artials &l modelo ofrece
una ca3a de abstracci#n de la base de datos utili2ada adems dan funcionalidad
agregada a datos de sesi#n 5 +alidaci#n de integridad relacional
&ste modelo a5uda a se3arar el trabaBo en l#gica de negocios FmodelosG 5 la 3resentaci#n
FAistasG Por eBem3loC si usted tiene una a3licaci#n que corra tanto en equi3os de
escritorio 5 en dis3ositi+os de bolsillo entonces 3odra crear dos +istas diferentes
com3artiendo las mismas acciones en el controlador 5 la l#gica del modelo
&l controlador a5uda a ocultar los detalles de 3rotocolo utili2ados en la 3etici#n FHJJPC
modo consolaC etcG 3ara el modelo 5 la +ista FinalmenteC el modelo abstrae la l#gica de
datosC que 0ace a los modelos inde3endientes de las +istas
La im3lementaci#n de este modelo es mu5 li+iana mediante 3eque\as con+enciones se
3uede lograr muc0o 3oder 5 funcionalidad
15.3 &Bem3lo
Para 0acer las cosas ms clarasC +eamos un eBem3lo de c#mo una arquitectura <A;
trabaBa 3ara un agregar al carrito PrimeroC el usuario interact[a con la interfa2
seleccionando un 3roducto 5 3resionando un bot#nC esto 3robablemente +alida un
formulario 5 en+a una 3etici#n al ser+idor
1 El -ront Aontroller 1ecibe la notificaci#n de una acci#n de usuarioC 5 luego de
eBecutar algunas tareas FenrutamientoC seguridadC etcGC entiende que debe
eBecutar la acci#n de agregar en el controlador
! <a accin de agregar accede al modelo 5 actuali2a el obBeto del carrito en la
sesi#n de usuario
$ %i la modificaci#n es almacenada correctamenteC la acci#n 3re3ara el contenido
que ser de+uelto en la res3uesta d confirmaci#n de la adici#n 5 una lista com3leta
de los 3roductos que estn actualmente en el carrito La +ista ensambla la
res3uesta de la acci#n en el cuer3o de la a3licaci#n 3ara 3roducir la 3gina del
carrito de com3ras
( Finalmente es transferida al ser+idor Web que la en+a al usuarioC quien 3uede
leerla e interactuar con ella de nue+o
<s informaci#n sobre <A; en Wiki3edia
Libro de Kumbia: Porque Programar debera ser ms fcil $1
14 Primera A3licaci#n en Kumbia
El #resente ca#?tulo tiene como ob&etivo entender la creacin de una #rimera
a#licacin usando 3umbia, "ue nos servir: #ara entender la ar"uitectura EOA '
al!unos caracter?sticas interesantes.
Nuestra 2rimera A#licacin
16 <odelos 5 Dases de >atos en Kumbia
16.1 "ntroducci#n
Kumbia 3osee una doble ca3a de abstracci#n de base de datos La 3rimera mantiene un
acceso uniforme que e+ita reescribir c#digo en caso de cambiar el motor de
almacenamiento 5 la segunda llamada Acti+e1ecord que est basada en su anlogo de
1ails] 3ermite ma3ear las relaciones de la base de datos a obBetos &ste ma3eo 3ermite
el fcil acceso 5 modificaci#n de las relaciones de la base de datos &ste ca3tulo e?3lica
la creaci#n de estos obBetosC la forma en que trabaBan 5 c#mo integrarlos con las dems
3artes de la arquitectura
16.2 ;a3a de Abstracci#n "nde3endiente
Kumbia 3osee una 3rimera ca3a que e+ita la reescritura del c#digo que accede a bases
de datos en caso de cambiar de un motor a otro Posee todas las funciones bsicas 3ara
efectuar o3eraciones sobre tablasC mantener cone?ionesC eBecutar consultasC etc sin
3erder inde3endencia &sta ca3a funciona baBo la ca3a obBeto relacional 5 es
am3liamente usada 3or todo el framework >ebera ser usada en caso de necesitar un
acceso de baBo ni+el a la base de datos
8tra +entaBa es que cursores 5 streams de cone?i#n son enca3sulados en obBetos
e+itando escribir c#digo re3etiti+o
16.3 Ada3tadores Kumbia
<ientras estos ada3tadores est/n dis3onibles se 3uede tener acceso a un motor de base
de datos en 3articular Actualmente e?isten: <5%.LC Postgre%.L FDetaG 5 8racle FbetaG
Libro de Kumbia: Porque Programar debera ser ms fcil $!
17 &squema de Acceso a Dases de >atos
en Kumbia
17.1 Eodelos
La segunda ca3a de abstracci#n de datos utili2a un ma3eo obBeto@relacional 3ara
re3resentar las entidades del modelo de datos en nuestras a3licaciones &stos modelos
son 3arte integral de la arquitectura <A; F<odel Aiew ;ontrollerG 5 estn basados en el
3atr#n Acti+e1ecord
;aractersticas de los modelos:
"m3lementan las clases de la ca3a de negocios: ProductosC ;lientesC FacturasC
&m3leadosC etc
<antienen los datos 5 su l#gica Buntos: 4n 3roducto tiene una cantidad 5 se +ende
s#lo si est acti+o
1e3resentar relaciones en el modelo: 4na ;liente tiene muc0as Facturas
Libro de Kumbia: Porque Programar debera ser ms fcil $$
18 Acceso >irecto a 1>D<%
18.1 La ;lase >dDase
La clase PKbQaseR 3ersonali2ada 3ara cada motor es cargada automticamente 5 est
dis3onible globalmente &l +alor database.t'#e en coni!Benvironment.iniC indica qu/
dri+er se debe cargar automticamente
18.2 Arear una instancia de KbQase
4so de la Funci#n DbDase::rawEconnectFG
Ya que los 3armetros de cone?i#n de la base de datos estn definidos en
coni!Benvironment.ini 3odemos utili2ar esta funci#n 3ara crear el obBeto db
&Bem3lo:
1. <?php
2. $db = DbBase::raw_connect();
3. ?>
18.3 Pro3iedades de la ;lase >bDase
18.3.1 Sdb@T5dCAonnection
Posee una referencia al stream de cone?i#n a la base de datos
18.3.2 Sdb@Tlast/esult*uer'
4ltima sentencia %.L eBecutada en la base de datos en la instancia
18.3.3 Sdb@Tdb1ser
4suario de la base de datos utili2ado 3ara crear la cone?i#n
18.3.( Sdb@TdbFost
Host de la base de datos utili2ado 3ara crear la cone?i#n
18.3.5 Sdb@Tdb2ort
Puerto de la base de datos utili2ado 3ara crear la cone?i#n
18.3.4 Sdb@Tdb2ass
Password del 4suario de la base de datos utili2ado 3ara crear la cone?i#n
Libro de Kumbia: Porque Programar debera ser ms fcil $(
18.3.6 Sdb@TlastError
eltimo error generado 3or el motor de la base de datos 3roducido en alguna o3eraci#n
%.L
18.3.7 Sdb@TdbName
*ombre de la base de datos actual
18.( </todos de la ;lase >D
18.(.1 *uer'
Kescri#cin: Permite en+iar sentencias %.L al motor de base de datos &l 3armetro
debug 3ermite +er un mensaBe del %.L que es en+iado al motor de base de datos
Sintaxis:
Hdb=Iquer5Fstring HsqlC Qbool HdebugSfalseRG
&Bem3lo:
1. <?php
2. $db = DbBase::raw_connect();
3. $db->query(update clientes set estado = A);
4. ?>
Alose
Kescri#cin: Kumbia 3ara el maneBo de las cone?iones 0acia los motores de D> utili2a
el 3atr#n de >ise\o %inglentonQ1RC de esta forma de e+ita crear multi3les cone?iones a la
D> innecesarias
Q1R=I0tt3:@@eswiki3ediaorg@wiki@%ingleton
18.(.2 -etc, Arra'
Kescri#cin: 1ecorre el cursor eBecutado en la [ltima o3eraci#n select
Sintaxis:
Hdb=Ifetc0Earra5FQcursor HcursorRC Qint Hti3oEresultadoS>DED8JHRG
&Bem3lo:
1. <?php
2. $db = DbBase::raw_connect();
3. $db->query(select codigo, nombre from productos);
4. while($producto = $db->fetch_array()){
5. print$producto[nombre!
6. }//fin while
7. $db->close();
8. ?>
Los ti3os de resultado 3ueden ser:
Libro de Kumbia: Porque Programar debera ser ms fcil $'
db::KQCA;;OA: Arra5 con ndices asociati+os de los nombres de los cam3os
db::KQCN1E: Arra5 con ndices num/ricos que indican la 3osici#n del cam3o en el
select
db::KQCQOTF: Arra5 con ndices tanto num/ricos como asociati+os
18.(.3 Num /o%s
Kescri#cin: >e+uel+e el n[mero de filas de la [ltima instrucci#n select en+iada al
motor de base de datos
Sintaxis:
Hdb=InumErowsFQcursor HcursorRG]
&Bem3lo:
1. <?php
2. $db = DbBase::raw_connect();
3. $db->query(select codigo, nombre from productos);
4. print "#a$ %.$db&'num(rows)*." productos "!
5. $db->close();
6. ?>
-ield Name
Kescri#cin: >e+uel+e el nombre del cam3o en la 3osici#n Hnumber del [ltimo select
en+iado al motor de base de datos
Sintaxis:
1. $db->field_name(int $number, [cursor $cursor]);
18.(.( Kata ;eek
Kescri#cin: %e mue+e a la 3osici#n Hnumber del cursor de la [ltima instrucci#n select
en+iada al motor de base de datos
Sintaxis:
1. $db->data_seek(int $number, [cursor $cursor]);
18.(.5 Aected /o%s
Kescri#cin: >e+uel+e el n[mero de filas afectadas en la [ltima instrucci#n insertC
u3date o delete
Sintaxis:
1. $db->affected_rows();
18.(.4 Error
Kescri#cin: >e+uel+e la cadena descri3ti+a del [ltimo error generado 3or base de
datos 3roducido 3or la [ltima instrucci#n %.L
Sintaxis:
1. $db->error();
Libro de Kumbia: Porque Programar debera ser ms fcil $-
18.(.6 No Error
Kescri#cin: >e+uel+e el n[mero interno del [ltimo error generado 3or base de datos
3roducido 3or la [ltima instrucci#n %.L
%inta?is:
1. $db->no_error();
18.(.7 -ind
Kescri#cin: &Becuta un %elect en el motor con los 3armetros en+iados 5 de+uel+e un
Arra5 con los resultados
Sintaxis:
1. $db->find(string $table, [string $where=1=1], [string $fields=*],
[string $orderBy=1]);
&Bem3lo:
1. <?php
2. $db = DbBase::raw_connect();
3. foreach($db->find(productos) as $producto){
4. print $producto[nombre!
5. } //fin del foreach
6. $db->close();
7. ?>
18.(.8 5n *uer'
>escri3ci#n: >e+uel+e el resultado de una instrucci#n %.L en un arra5 listo 3ara ser
recorrido
Sintaxis:
Hdb=IinEquer5Fstring HsqlC Qbool HdebugSfalseRC Qint Hti3oEresultado S db::>DED8JHRG]
&Bem3lo:
1. <?php
2. $db = DbBase::raw_connect();
3. foreach($db->in_query(select * from productos) as $producto){
4. print $producto[nombre!
5. }//fin del foreach
6. $db->close();
7. ?>
18.(.10 5n *uer' Assoc
Kescri#cin: >e+uel+e el resultado de una instrucci#n %.L en un arra5 con inde?ado
asociati+o listo 3ara ser recorrido
Sintaxis:
1. $db->in_query_assoc(string $sql, [bool $debug=false]);
Libro de Kumbia: Porque Programar debera ser ms fcil $6
18.(.11 5n *uer' Num
Kescri#cin: >e+uel+e el resultado de una instrucci#n %.L en un arra5 con inde?ado
num/rico listo 3ara ser recorrido
Sintaxis:
1. $db->in_query_num(string $sql, [bool $debug=false]);
18.(.12 -etc, One
Kescri#cin: >e+uel+e la 3rimera fila de un select &s [til cuando el select de+uel+e
una sola fila
Sintaxis:
1. $db->fetch_one(string $sql, [bool $debug=false]);
&Bem3lo:
1. <?php
2. $db = DbBase::raw_connect()();
3. $producto = $db->fetch_one(select * from producto where codigo = 1);
4. print $producto[nombre!
5. $db->close();
6. ?>
18.(.13 Table EDists
Kescri#cin: >e+uel+e +erdadero si la tabla Htable e?iste en la base de datosC falso de
lo contrario
Sintaxis:
1. $db->table_exists(string $table);
Libro de Kumbia: Porque Programar debera ser ms fcil $7
20 )Por qu/ usar una ca3a de Abstracci#n,
Las Dases de datos son relaciones 5 PHP'@Kumbia es orientado a obBetos 3or lo tanto
deberamos acceder a las D> en forma orientada a obBetos Para esto necesitamos una
interfa2 que transforme la l#gica de obBetos a la relacional 5 +ice+ersa &ste 3roceso es
llamado ma3eo obBeto=relacional o en ingl/s 81< F8bBect=1elational <a33ingGC 5 es
usado 3or Kumbia en su arquitectura <A;
%e trata de dar a los obBetosC acceso a los datos sin deBar de lado las reglas de la l#gica
de negocios
4n beneficio de la ca3a da abstracci#n ob&etoBrelacional es que 3re+iene un 3oco el uso
de sinta?is es3ecfica de un motor de base de datosC 5a que automticamente traduce
los llamados a los obBetos modelos en instrucciones %.L o3timi2adas 3ara el motor
actual
&sto significa que cambiar de un motor de base de datos a otro en la mitad del 3ro5ecto
es ms fcil de lo que se imagina Pasar de Postgre%.L a <5%.L o a 8racle requiere de
un cambio de una lnea de configuraci#n
4na ca3a de abstracci#n enca3sula la l#gica de datos &l resto de la a3licaci#n no
necesita saber sobre instrucciones %.LC aunque 3uede 0acerlo si lo requiere
Aer las filas como obBetos 5 las tablas como clases tiene otro beneficio Permiten crear
nue+os accesos 3ara nuestras tablas Por eBem3lo si tenemos una clase ;lientes 5 tiene
un cam3o 3rimer nombreC otro segundo nombre 5 a3ellidos entonces 3odemos crear un
acceso llamado get*ombre as:
1. public function getNombre(){
2. return $this->primer_nombre. .$this->segundo_nombre. .
3. $this->apellidos;
4. }
Kumbia 3ro3orciona una serie de clases LActive/ecord ' ;ession/ecord9 que
3ermiten reali2ar este ma3eo 5 adems eBecutar o3eraciones nati+as sobre las relaciones
de la base de datos de forma ms 0umana 5 entendible
Libro de Kumbia: Porque Programar debera ser ms fcil $9
21 La Aida sin Acti+e1ecord
Anteriormente las a3licaciones eran bolas de c#digoC me2claban %.LC ;%%C HJ<LC PHPC
Ua+a%cri3tC etc Al menos los que buscbamos un orden mnimo conseguamos se3arar
algunas cosas] 3ero el %.L 5 el PHP siem3re iban ligados as que 0acer cambios en el
modelo relacional 3odra ser fatal 5a que da\aba muc0as 3artes de la a3licaci#n que 5a
estaban 3robadas
&ste no es un 3roblema e?clusi+o de PHPC tambi/n lo tienen otros lenguaBes o estilos de
3rogramaci#n que no re3aran en esto Por eBem3lo en Aisual Dasic *&J 5 en PHP
tradicional:
1. Dim nit As String = 808111827-2
2. Dim Query As String = "select count(*) from clientes where nit = " & nit &