manualkumbiaphp1.0beta2

128
Si no usamos headings no tendremos TOC !!! (TOC = tabla de contenido o índice) Los nombres de archivo y métodos en itálica. El código en una tabla. ( No hemos encontrado mejor solución), por ahora se colorea con http://codepad.org y fuente Courier New. El texto y headings en Arial. Manual de KumbiaPHP Framework Versión 1.0 Spirit Borrador para la beta2 Final 12 de junio de 2013 www.kumbiaphp.com

Upload: jhon-javier-h

Post on 18-Aug-2015

219 views

Category:

Documents


0 download

DESCRIPTION

desc

TRANSCRIPT

Si no usamos headings no tendremos TOC !!! (TOC = tabla de contenido o ndice)Los nombres de archivo y mtodos en itlica.El cdigo en una tabla. ( No hemos encontrado mejor solucin), por ahora se colorea con http://codepad.org y fuente Courier New.El texto y headings en Arial.Manual de KumbiaPHP Frameor!"ersi#n $%& S'iritBorrador para la beta2 Final12 de junio de 2013%!umbia'h'%com(ndice general(no tocar) se crea autom*tico con los headings)1 ntroduccin1.1. Agradecimientos1.2. Prefacio1.2.1. Sobre este libro1.2.2. Sobre KumbiaPHP1.2.3. Sobre la comunidad1.2.4. Porque usar KumbiaPHP Framework?1.2.5. Qu aporta KumbiaPHP?1.2.6. Modelo, Vista, Controlador (MVC)1.2.6.1. Que es MVC?1.2.6.2. Como KumbiaPHP aplica el MVC?1.2.6.3. Ms informacin1.2.6.4. Caso prctico (CAMBAR EJEMPLO)2 Empezando con KumbiaPHP2.1.nstalar KumbiaPHP2.1.1. Requisitos2.1.2. Configurar Servidor Web2.1.2.1. Habitando mod_rewrite de Apache en GNU/Linux (Debian, Ubuntu y Derivados)2.1.2.2. Por qu es importante el Mod-Rewrite?2.1.3. Mi Primera Aplicacin con KumbiaPHP2.1.3.1. Hola, KumbiaPHP!2.1.3.2. El Controlador2.1.3.3. La Vista2.1.3.4. KumbiaPHP y sus URLs2.1.3.5. Agregando ms contenidoPara agregarle calidez al asunto, le preguntaremos al usuario su nombre va2.1.3.6. Repitiendo la Historia3 El Controlador3.1.Controlador Frontal3.1.1. Destripando el Front Controller3.1.2. Front Controller por defecto3.1.3. Constantes de KumbiaPHP3.1.3.1. APP_PATH3.1.3.2. CORE_PATH3.1.3.3. PUBLC_PATH3.2.Las Acciones3.2.1. Las acciones y las vistas3.2.2. Obtener valores desde una accin3.3. Convenciones y Creacin de un Controlador3.3.1. Convenciones3.3.2. Creacin de un Controlador3.3.3. Clase AppController3.3.4. Acciones y Controladores por defecto3.4. Filtros3.4.1. Filtros de Controladores3.4.1.1. initialize()3.4.1.2. finalize()3.4.2. Filtros de Acciones3.4.2.1. before_filter()3.4.2.2. after_filter()4 La Vista4.1 Pasando datos a la vista4.2 Buffer de salida4.3 Template4.3.1 Como crear un Template?4.3.2 Como utilizar un template?4.3.3 Pasando datos al template4.4 Partial4.4.1 Como crear un partial?4.4.2 Cmo utilizar un partial?4.4.3 Pasando datos a los partials4.5 Agrupando en directorios4.5.1 Ejemplo de agrupacin de vista4.5.2 Ejemplo de agrupacin de partial4.5.3 Ejemplo de agrupacin de template4.6 Tipos de respuestas4.7 Uso de cache en las vistas4.7.1 Cache de vistas4.7.1.1 Grupos de vistas en cache4.7.2 Cache de templates4.7.3 Cache de partials4.8 Helpers4.8.1 Clase HtmlHtml::img()Html::link()Html::lists()Html::gravatar()Html::includeCss()Html::meta()Html::includeMetatags()Html::headLink()Html::headLinkAction()Html::headLinkResource()Html::includeHeadLinks()4.8.2. Clase TagTag::css()Tag::js()ncluye un archivo JavaScript a la vista, partial o template4.8.3. Clase FormForm::open()Form::openMultipart()Form::close()Form::input()Form::text()Form::pass()Form::textarea()Form::label()Form::hidden()Form::dbSelect()Form::select()Form::file()Form::button()Form::submitmage()Form::submit()Form::reset()Form::check()Form::radio()JsJs::link ()Js::linkAction ()Js::submit ()Js::submitmage ()AjaxAjax::link()Ajax::linkAction()5 Modelos5.1 ActiveRecord5.2 Ejemplo sin ActiveRecord5.3 Cmo usar los modelos5.4 ActiveRecord AP5.4.1 Consultas5.4.1.1 distinct ()5.4.1.2 find_all_by_sql (string $sql)5.4.1.3 find_by_sql (string $sql)5.4.1.4 find_first (string $sql)5.4.1.5 find ()5.4.1.6 select_one(string $select_query) (static)5.4.1.7 exists()5.4.1.8 find_all_by()5.4.1.9 find_by_*campo*()5.4.1.10 find_all_by_*campo*()5.4.2 Conteos y sumatorias5.4.2.1 count()5.4.2.2 sum()5.4.2.3 count_by_sql()6 ScaffoldntroduccinConceptoObjetivoPrimeros PasosControladorVentajasDesventajaViews para el scaffold7 Clases padre7.1 AppController7.2 ActiveRecord7.2.1. Ventajas del ActiveRecord7.2.2. Crear un Modelo en Kumbia PHP Framework7.2.3. Columnas y Atributos7.2.4. Llaves Primarias y el uso de Ds7.2.5. Convenciones en ActiveRecordView8 Libs de KumbiaPHPCachdriver($driver=null)get($id, $group='default')save($value, $lifetime=null, $id=false, $group='default')start ($lifetime, $id, $group='default')end ($save=true)LoggerLogger::warning ($msg);Logger::error ($msg)Logger::debug ($msg)Logger::alert ($msg)Logger::critical ($msg)Logger::notice ($msg)Logger::info ($msg)Logger::emergence ($msg)Logger::custom ($type='CUSTOM', $msg)FlashFlash::error($text)Flash::valid($text)Flash::info($text)Flash::warning($text)Flash::show($name, $text)SessionSession::set($index, $value, $namespace='default')Session::get($index, $namespace='default')Session::delete($index, $namespace='default')Session::has($index, $namespace='default')LoadLoad::coreLib($lib)Load::lib($lib)Load::model($model)Auth2Solicitando un adaptadorAdaptador predeterminadoComo trabaja la autenticacinAdaptador ModelsetModel()identify()logout()setFields()setSessionNamespace()isValid()getError()setAlgos()setKey()setCheckSession()setPass()setLogin()Obtener los campos cargados en sesinEjemplo9 Usar clases externas10 La ConsolantroduccinComo utilizar la ConsolaConsolas de KumbiaPHPCacheclean [group] [--driver]Permite limpiar la cache.Argumentos secuenciales:Argumentos con nombre:Ejemplo:php ../../core/console/kumbia.php cache cleanremove [id] [group]Modelcreate [model]delete [model]Controllercreate [controller]delete [controller]Desarrollando tus ConsolasConsole::inputApndicesntegracin de jQuery y KumbiaPHPKDebugCRUDntroduccinConfigurando database.iniModeloControllerVistasProbando el CRUDAplicacin en produccinPartials de paginacinClassicDiggExtendedPunbbSimpleEjemplo de usoAuthBeta1 a Beta2DeprecatedMtodos y clases que se usaban en versiones anteriores y que aun funcionan. Pero que quedan desaconsejadas y que no funcionaran en el futuro (prxima beta o versin final):Lista de cambios entre versiones:si no se especifica beta1 es que es compatible en ambos casosCambio en las rutas entre versiones:Glosario$ +ntroducci#n$%$% ,gradecimientosEste manual es para agradecer a los que con su tiempo y apoyo, en gran o en poca medida, hanayudado a que este framework sea cada da mejor. A toda la comunidad que rodea a KumbiaPHP, con sus preguntas, notificaciones de errores (Bug's), aportes, crticas, etc., a todos ellos Gracias!.$%-% Pre.acio $%-%$%Sobre este libroEl libro de KumbiaPHP intenta comunicar, todo lo que este framework puede ayudar en su trabajo diario como desarrollador. Le permite descubrir todos los aspectos de KumbiaPHP y aprender porque KumbiaPHP puede ser la herramienta, que estaba esperando para empezar a desarrollar su proyecto. Este libro se encuentra en etapa de continuo desarrollo, diseo grfico, revisin ortogrfica y gramtica, contenidos, etc. Tal como sucede con el framework, por lo cual se aconseja siempre disponer de la ltima versin.Esta versin del manual ha cambiado mucho de la anterior. Gracias a la comunidad se han reflejado cuestiones que se repetan en grupo, foro e RC. Tambin se detecto el mal uso del MVC, y no se aprovechaban las facilidades del POO. Se ha intentado mejorar esos puntos recurrentes de consulta, as como mejorar el entendimiento de uso, para que creen mejores y ms mantenibles aplicaciones.$%-%-%Sobre KumbiaPHPKumbiaPHP es un producto latino para el mundo. Programar debe ser tan bueno como bailar y KumbiaPHP es un baile, un baile para programar. KumbiaPHP es un framework de libre uso bajolicencia ne /S0. Por lo tanto, puedes usar KumbiaPHP para tus proyectos siempre y cuando tengas en cuenta la licencia. Te aconsejamos que siempre uses versiones estables y lo ms recientes posibles, ya que se incluyen correcciones, nuevas funcionalidades y otras mejoras interesantes.$%-%1%Sobre la comunidadLa comunidad de KumbiaPHP esta formada en su gran mayora por gente hispano-latina, de la cual nace un framework completamente en espaol. Y donde radica su mayor diferencia respecto a otros frameworks que son, de forma nativa, anglosajones. Por otra parte se ha intentado, con el tiempo, aportar nuevos sistemas de comunicacin, as que se cuenta con una lista de correo, el foro, canal de RC y una WiKi. Esperamos que todo esto haga que la comunidad sea una parte importante y vital para enriquecer y mejorar KumbiaPHP.Puedes encontrar ms informacin en www.kumbiaphp.com$%-%2%3Por4ue usar KumbiaPHP Frameor!5Mucha gente pregunta cmo es este framework?, otro ms?, ser fcil? qu tan potente es? etc. Pues aqu algunas razones para utilizar KumbiaPHP:1. Es muy fcil de usar (Zero-Config). Empezar con KumbiaPHP es demasiado fcil, es solo descomprimir y empezar a trabajar, esta filosofa tambin es conocida como Convencin sobre Configuracin.2. Agiliza el Trabajo, crear una aplicacin muy funcional con KumbiaPHP es cuestinde horas o minutos, as que podemos darle gusto a nuestros clientes sin que afecte nuestro tiempo. Gracias a las mltiples herramientas que proporciona el framework para agilizar el trabajo podemos hacer ms en menos tiempo.3. Separar la Lgica de la Presentacin, una de las mejores prcticas de desarrollo orientado a la Web es separar la lgica de los datos y la presentacin, con KumbiaPHP es sencillo aplicar el patrn MVC (Modelo, Vista, Controlador) y hacer nuestras aplicaciones ms fciles de mantener y de escalar.4. Reduccin del uso de otros Lenguajes, gracias a los Helpers y a otros patrones como ActiveRecord evitamos el uso de lenguajes HTML y SQL (en menor porcentaje). KumbiaPHP hace esto por nosotros, con esto logramos cdigo mas claro, natural y con menos errores.5. Habla Espaol La documentacin, mensajes de error, archivos de configuracin,comunidad, desarrolladores hablan espaol!, con esto no tenemos que entender a medias, como con otros frameworks que nos toca quedarnos cruzados de manos porque no podemos pedir ayuda.6. La !ur"a de Aprendizaje de KumbiaPHP es muy corta, y si a esto le agregamos experiencia en el manejo de Programacin Orientada a Objetos, ser mas rpida.7. Parece un juego, sin darnos cuenta aplicamos los patrones de diseo; los patrones de diseo son herramientas que facilitan el trabajo realizando abstraccin, reduciendo cdigo o haciendo ms fcil de entender la aplicacin. Cuando trabajas con KumbiaPHP aplicas muchos patrones y al final te das cuenta que eran ms fciles de usar de lo que se piensa.8. Soft#are Libre, No tienes que preocuparte por licenciar nada, KumbiaPHP promueve las comunidades de aprendizaje, el conocimiento es de todos y cada uno sabecomo aprovecharlo mejor.9. Aplicaciones Robustas, no saba que tena una?. Las aplicaciones de hoy da requieren arquitecturas robustas. KumbiaPHP proporciona una arquitectura fcil de aprender y de implementar, sin complicarnos con conceptos y sin sacrificar calidad.$%-%6%37u8 a'orta KumbiaPHP5KumbiaPHP es un esfuerzo por producir un framework que ayude a reducir el tiempo de desarrollo de una aplicacin web sin producir efectos sobre los programadores, basndonos en principios claves, que siempre recordamos. $%SS Mantenlo simple, estpido (Keep t Simple, Stupid). &R' No te repitas, en ingls Don't Repeat Yourself, tambin conocido como Una vez y slo una. Convencin sobre configuracin. Velocidad.Adems KumbiaPHP esta fundamentado en las siguientes premisas: Fcil de aprender. Fcil de instalar y configurar. Compatible con muchas plataformas. Listo para aplicaciones comerciales. Simple en la mayor parte de casos pero flexible para adaptarse a casos ms complejos. Soportar muchas caractersticas de aplicaciones Web actuales. Soportar las prcticas y patrones de programacin ms productivos y eficientes. Producir aplicaciones fciles de mantener. Basado en Software Libre.Lo principal es producir aplicaciones que sean prcticas para el usuario final y no slo para el programador. La mayor parte de tareas que le quiten tiempo al desarrollador deberan ser automatizadas por KumbiaPHP, para que pueda enfocarse en la lgica de negocio de su aplicacin. No deberamos reinventar la rueda cada vez que se afronte un nuevo proyecto de software.Para satisfacer estos objetivos KumbiaPHP est escrito en PHP5. Adems ha sido probado en aplicaciones reales que trabajan en diversas reas con variedad de demanda y funcionalidad. Escompatible con las bases de datos disponibles actuales mas usadas: MySQL. PostgreSQL. Oracle. SQLite.El modelo de objetos de KumbiaPHP es utilizado en las siguientes capas: Abstraccin de la base de datos. Mapeo Objeto-Relacional. Modelo MVC (Modelo, Vista, Controlador).Caractersticas comunes de aplicaciones Web que son automatizadas por KumbiaPHP: Plantillas (TemplateView). Validacin y Persistencia de Formularios. Administracin de Cach. Scaffolding. Front Controller. nteraccin AJAX. Generacin de Formularios. Seguridad.$%-%9%Modelo) "ista) Controlador (M"C)$%-%9%$% 37ue es M"C5En 1979, Trygve Reenskaug desarroll una arquitectura para desarrollar aplicaciones interactivas. En este diseo existan tres partes: modelos, vistas y controladores. El modelo MVCpermite hacer la separacin de las capas de interfaz, modelo y lgica de control de sta. La programacin por capas, es un estilo de programacin en la que el objetivo primordial es la separacin de la lgica de negocios de la lgica de diseo, un ejemplo bsico de esto es separarla capa de datos de la capa de presentacin al usuario.La ventaja principal de este estilo, es que el desarrollo se puede llevar a cabo en varios niveles yen caso de algn cambio slo se ataca al nivel requerido sin tener que revisar entre cdigo mezclado. Adems permite distribuir el trabajo de creacin de una aplicacin por niveles, de estemodo, cada grupo de trabajo est totalmente abstrado del resto de niveles, simplemente es necesario conocer la AP (nterfaz de Aplicacin) que existe entre niveles. La divisin en capas reduce la complejidad, facilita la reutilizacin y acelera el proceso de ensamblar o desensamblar alguna capa, o sustituirla por otra distinta (pero con la misma responsabilidad).En una aplicacin Web una peticin se realiza usando HTTP y es enviado al controlador. El controlador puede interactuar de muchas formas con el modelo, luego l primero llama a la respectiva vista la cual obtiene el estado del modelo que es enviado desde el controlador y lo muestra al usuario.$%-%9%-% 3Como KumbiaPHP a'lica el M"C5KumbiaPHP Framework aprovecha los mejores patrones de programacin orientada a la Web enespecial el patrn MVC (Modelos, Vistas, Controladores). A continuacin se describe el funcionamiento general de este paradigma en KumbiaPHP.El objetivo de este patrn es el realizar y mantener la separacin entre la lgica de nuestra aplicacin, los datos y la presentacin. Esta separacin tiene algunas ventajas importantes, como poder identificar ms fcilmente en qu capa se est produciendo un problema con slo conocer su naturaleza. Podemos crear varias presentaciones sin necesidad de escribir varias veces la misma lgica de aplicacin. Cada parte funciona independiente y cualquier cambio centraliza el efecto sobre las dems, as que podemos estar seguros que una modificacin en uncomponente realizar bien las tareas en cualquier parte de la aplicacin.$%-%9%1% M*s in.ormaci#nLa base de KumbiaPHP es el MVC y POO, un tradicional patrn de diseo que funciona en tres capas: Modelos: Representan la informacin sobre la cual la aplicacin opera, su lgica de negocio. "istas: Visualizan el modelo usando pginas Web e interactuando con los usuarios (en principio) de stas, una vista puede estar representada por cualquier formato salida, nos referimos a un xml, pdf, json, svg, png, etc. todo esto son vistas. Controladores: Responden a acciones de usuario e invocan cambios en las vistas o en los modelos segn sea necesario.En KumbiaPHP los controladores estn separados en partes, llamadas front controller y en un conjunto de acciones. Cada accin sabe cmo reaccionar ante un determinado tipo de peticin.Las vistas estn separadas en templates, views y partials.El modelo ofrece una capa de abstraccin de la base de datos, adems da funcionalidad agregada a datos de sesin y validacin de integridad relacional. Este modelo ayuda a separar el trabajo en lgica de negocios (Modelos) y la presentacin (Vistas).Por ejemplo, si usted tiene una aplicacin que corra tanto en equipos de escritorio y en dispositivos mviles entonces podra crear dos vistas diferentes compartiendo las mismas acciones en el controlador y la lgica del modelo. El controlador ayuda a ocultar los detalles de protocolo utilizados en la peticin (HTTP, modo consola, etc.) para el modelo y la vista.Finalmente, el modelo abstrae la lgica de datos, que hace a los modelos independientes de las vistas. La implementacin de este modelo es muy liviana mediante pequeas convenciones se puede lograr mucho poder y funcionalidad.$%-%9%2% Caso 'r*ctico (C,M/+,;