KumbiaPHP Framework

Hace un tiempo que estoy viendo que Framework usar, donde llegue a un punto que tenia en la mira a Symfony y a KumbiaPHP, en vista de que muchos otros Framework tienen una curva de aprendizaje mucho mas empinada. Anticipo que me he direccionado a conocer a Kumbia ya que me ha gustado su perfil (que no es muy distinto a otros FW pero que realmente existen cosas que los diferencian) y siempre entre gustos y colores cada quien se inclinara por el que mas le resulte a sus necesidades.

Cito parte de la documentacion de Kumbia PHP Framework, (en este post) documentacion en PDF que puede descargarse de aqui, ya existe la version 1.0 spirit, pero la documentacion de la v0.5 posee mucha mas informacion que no esta presente en el wiki oficial.

Citado del Libro de Kumbia:

Anteriormente las aplicaciones eran bolas de código, mezclaban SQL, CSS, HTML, PHP, JavaScript, etc. Al menos los que buscábamos un orden mínimo conseguíamos separar algunas cosas; pero el SQL y el PHP siempre iban ligados así que hacer cambios en el modelo relacional podría ser fatal ya que dañaba muchas partes de la aplicación que ya estaban probadas.

Antes que nada, la necesidad de un Framework para aplicaciones bajo ambiente web ofrecen:

  • El definir una filosofia de trabajo.
  • El que proporciona librerias y funciones, lo cual le hacen la vida mas facil al programador.
  • Ahorra trabajo/tiempo.
  • El que produce aplicaciones mas faciles de mantener.
  • Evita el que exista codigo duplicado (en cambio se reutiliza).
  • Permiten crear aplicaciones Multi-Capa. (separar el modelo de negocio, la logica de negocio y la vista del mismo).

Kumbia ofrece:

  • Implementacion de los mejores patrones de programacion (Singlenton, MVC) orientados a ambiente web.
  • Fomenta la utilizacion de caracteristicas web 2.0
  • Hace la mayor parte del trabajo y se ocupa de los “detalles” de forma interna.
  • El mantenimiento de la aplicacion es mas facil.
  • Es software libre.
  • Es facil de instalar/configurar y de aprender y su documentacion esta ‘nativamente’ en espanol.
  • Sistema de Layout, Plantillas, Partials.
  • Administracion de cache.
  • Scaffolding avanzado.
  • ORM, Modelo de Objeto-Relacional y separacion MVC.
  • Soporte para AJAX/JQuery.
  • Generacion de Formularios (y validacion de estos) de forma rapida y muy completos en su funcionalidad.
  • Componentes Graficos.
  • Seguridad

Exceptuando paginas web sencillas de pocas paginas donde a duras penas existe una base de datos de por medio y en donde una representacion de una empresa u organizacion solo desean tener un espacio en la nube que muestre su catalogo de productos, mision, vision, contactos, sucursales, etc.. no es necesario el uso de un framework, seria invertir una enorme herramienta para algo que no la requiere realmente (a no ser que esa web evolucione en algo mas mabicioso).  Pero para el caso de aplicaciones (no web, sino aplicaciones web) el uso de un framework ayuda bastante, es algo acertadamente a la medida para ese tipo de proyectos.

Kumbia posee un modelo de objetos el cual esta basado en 3 diferentes aspectos:

  • Abstraccion de la base de datos
  • Mapeo Objeto-Relacion (ORM)
  • Patron MVC (Modelo, Vista, Controlador)

Gracias a los Helpers y patrones como ActiveRecord, Kumbia evita el uso de lenguajes SQL o HTML lo menor posible ya que internamente hace esto por nosotros, logrando asi codigo mas claro, natural y con menores errores, al igual que mas seguro. Tambien por ser un Framework en espanol, su documentacion, mensajes de error, archivos de configuracion y su comunidad, todo bajo el habla castellana, por lo que no se presenta el caso de entender a medias otros framework o no poder pedir ayuda bajo otro idioma.

Ventajas del Active Record:

  • Se trabajan las entidades del Modelo más naturalmente como objetos.
  • Las acciones como Insertar, Consultar, Actualizar, Borrar, etc. de una entidad del
    Modelo están encapsuladas así que se reduce el código y se hace más fácil de
    mantener.
  • Código más fácil de entender y mantener.
  • Reducción del uso del SQL en un 80%, con lo que se logra un alto porcentaje de
    independencia del motor de base de datos.
  • Menos “detalles” más practicidad y utilidad
  • ActiveRecord protege en un gran porcentaje de ataques de SQL inyection que
    puedan llegar a sufrir tus aplicaciones, escapando caracteres que puedan facilitar
    estos ataques.

Todo Framework hoy en dia se basa en el patron MVC debido a que ofrece:

  • Identificar mas facilmente en que capa se esta produciendo un problema con solo saber su naturaleza.
  • El poder crear varias presentaciones sin necesidad de escribir varias veces la misma logica de aplicacion. Puede tenerse una presentacion para web, otra para disposivitos moviles o de impresion, etc.
  • Cada capa funciona independientemente y cualquier cambio centraliza el efecto sobre las demas, lo cual hace que una modificacion en un componente realizara bien las tareas en cualquier parte de la aplicacion.

Kumbia posee una doble capa de abstraccion de BD, la 1era mantiene un acceso uniforme que evita reescribir codigo en el caso de cambiar el motor de BD, cursores y streams de conexion son encapsulados en objetos evitando escribir codigo repetitivo. La 2da es el ActiveRecord el cual permite mapear las relaciones de la BD a objetos (ORM), mapeo que permite el facil acceso y modificacion de las relaciones de la BD.

En lo que a mi concierne vale la pena probarlo, ya que he sabido de personas que han usado symfony y posteriormente han preferido kumbia, su estructura organizacional lo muestra como un framework apuntado a ser liviano, rapido y potente.. y sobre todo muy entendible, su curva de aprendizaje es menos pronunciada que las de otros framework.

Tambien es maravilloso ver como este Framework ha evolucionado siendo propiamente de habla hispana, un framework del cual no esta detras una compania, es netamente algo de la comunidad, todo el que desee sumarse al uso y su desarrollo tiene las puertas abiertas.

Esta el Wiki aunque ya tienen otro que es este, el blog, el foro, la listmail y el irc.


About this entry