23.2.08

Framework PHP: CakePHP


Finalmente voy a hablar un poco de mis comienzos con este "framework" para PHP.

Empecé a programar PHP/MySQL hace algo más de 2 años, al principio todo era nuevo y el uso que le daba al lenguaje era usando los comandos básicos del lenguaje, pero a medida que iba aprendiendo y haciendo proyectos mas grandes y complicados veía que necesitaba "algo más"... Desde una manera de organizar los archivos, carpetas hasta una manera estandar de acceder a las bases de datos y mostrar la información.

Cuando uno apenas domina un lenguaje es impensable utilizar librerías y funciones que dan por sentado una base en el manejo del lenguaje,... pero una vez tenemos esas bases, ya podemos "aventurarnos" a las cosas mas complicadas.

Así que llegado a este punto en donde las bases de PHP ya las tenía mas o menos asumidas y viendo que necesitaba urgentemente un orden y sistema de trabajo fue cuando me atreví a ver de que se trataba esto del CakePHP.

En estos días se cumple mas o menos el año desde ese primer acercamiento a CakePHP, y no puedo estar más conforme con la elección :)

CakePHP es Código Abierto, o sea que somos libres de utilizarlo sin pagar, obviamente si podemos hacer donaciones para que ese proyecto siga creciendo y mejorando todos saldremos beneficiados.

12 comentarios:

  1. Bahhh josepzin sácale un poco más de chicha a tus experiencias con CakePHP que a algunos nos interesan!!

    ResponderEliminar
  2. Jaja! tienes razón... al final me quedó en un artículo que habla de mi toma de contacto con CakePHP y nada más... Prometo en breve escribir algo más, para entusiasmar a los futuros incautos ;)

    ResponderEliminar
  3. Hola, creo que CakePHP puede llegar a ser medio lento en cuanto a performance. Existe otro framework que también es al estilo Ruby On Rails: CodeIgniter (http://codeigniter.com/). Aunque CodeIgniter oculta algo de SQL, no tiene una abstracción tan grande como CakePHP al acceder a la base de datos (por eso también es un poco más rápido).

    ResponderEliminar
  4. Bueno, yo he utilizado CakePHP en tres proyectos llamémosles "serios", y recuerdo uno especialmente que era terriblemente grande, un gestor documental de tres pares de narices. CakePHP está muy pero que muy bien pero creo que no es válido para aplicaciones que se salen del tamaño pequeño-mediano.

    ¿Cuál es el problema? Que CakePHP toma inicialmente el control del cotarro y luego ya si eso te deja implementar las acciones, pero no tienes un control **total**. Por este motivo me ví obligado en el proyecto que comento a escribir una capa intermedia entre mi aplicación y CakePHP para que todo funcionara como debía (hablo de una aplicación como digo muy grande, un gestor documental con permisos avanzados, formularios dinámicos, conexión a webservices de terceros, tienda on-line, gestión de códigos de barras, gestión de tarjetas RFID, controles de calidad, generación de informes en distintos formatos, gestión y mantenimiento de copias de segurida,d etc.). En aquél momento probé diversos frameworks en un estudio que hicimos para ver cual era el más adecuado para la aplicación y, como digo, en aquél momento CakePHP fue el más adecuado. Entonces miramos algunas otras cosas como PHP on tracks o Zend Framework.

    Desde entonces ha llovido mucho y debo decir que Zend Framework ha evolucionado increiblemente y me parece de todos ellos el mejor, no toma el control hasta que no se lo das y todo es fácilmente adecuable a tus necesidades. Lo combino con otros frameworks en JS como por ejemplo Scriptaculous o YUI, y la velocidad de codificación es impresionante, además de ser tremendamente robusto.

    Sé lo que cuesta cambiar de framework, y pasar de CakePHP a ZF me costó lo mío porque me había acostumbrado mucho a Cake, pero realmente mereció la pena. Para proyectos pequeños como pequeñas webs de tiendas o negocios no muy grandes está muy muy bien, pero cuando intentas utilizarlo para hacer aplicaciones gigantescas... es mejor valorar otras alternativas.

    Saludos.

    ResponderEliminar
  5. Como se aprecia en mi artículo, son relativamente novato con CakePHP, así que no estoy capacitado para decir si puede competir o no contra "los grandes".

    Simplemente voy a resumir aquí algunas impresiones y opiniones dentro de mi experiencia.
    - Me costó mucho comenzar a usarlo, pero la culpa de esto fue totalmente debido a mi nula experiencia con POO.
    - Hay mucha ayuda en internet, blogs, PDFs, manuales, grupos en español e ingles y en general mucho espíritu de ayuda.
    - En contrapartida, la documentación oficial nunca me resultó práctica ni extensa, aunque con la experiencia ya sé donde encontrar la ayuda cuando la necesito :D
    - Siento que tengo muchisimas opciones por aprender a utilizar, librerías por descubrir, que estoy rascando la superficie de la potencia de este framework.
    - Ahora hago proyectos ordenados y fáciles de mantener. Cuando tengo que modificar paginas del inicio con Cake, me agarro la cabeza porque la forma que hice las cosas no eran las correctas, pero al menos estan donde DEBEN estar.

    Y ya pondré mas cosas en otro artículo :)

    ResponderEliminar
  6. Otra cosa mas, puse un enlace de este artículo en el grupo español de CakePHP, para generar opiniones sobre el tema. Fue muy interesante :)

    Una pena que para consultar esas opiniones haya que estar registrado. Quizas pueda copiar algunas aqui.

    http://groups.google.com/group/CakePHP-es

    ResponderEliminar
  7. Buen artículo!

    Hace poco que descubrí el cake, y artículos así me animan a probarlo más detenidamente...

    :-)

    ResponderEliminar
  8. Embat, me alegro que haya sido útil :)

    Yo todavía no probé la version 1.2, que tiene mucha mas potencia y facilidades!!!

    Suerte

    ResponderEliminar
  9. Ciertamente mi opinion es nula totalmente para este tema y aunque he escuchado mucho sobre este framework siendo que es muy popular, me he dado cuenta de que tiene contras que no me han convencido fielmente de entrarle y aprender sobre su utilizacion. Pienso que mas que una ayuda, de momentos puede ser como una carga excesiva de la cual no aprovechare al maximo o al contrario.. no obtendre los resultados esperados..

    Seria interesante en tu poca experiencia que tienes profundizaras un poco mas en su uso y las experiencias que has tenido para bien y para mal.. en mi caso me daria una mejor idea de si seria funcional para mis proyectos o no.. :P

    ResponderEliminar
  10. - Cake es un conjunto de librerías, una manera de organizar la información, los módulos, el codigo, los archivos... abarca muchos aspectos y en principio conviene usarlo tal cual es. Luego, cuando conozcamos mejor como funciona sí podemos darnos el lujo de "ir contra la corriente" y alterar ese esqueleto basico. Igual tambien es muy personalizable, solo que al principio uno no sabe donde se configura cada cosa y por eso conviene usarlo tal cual es.

    Puede ser una "carga" en dos sentidos: una web que muestre un html directo o un .php con SELECTS y ECHOS es mucho mas rapida que una web que use un framework, por el simple hecho que un framework tiene muchos pasos en el medio. Tampoco podría decir en que punto una web comienza a resentirse por esa carga de codigo adicional.
    EL otro sentido, es que apenas comenzar uno se encuentra "perdido", como siempre que estamos ante algo nuevo, y algo que antes lo hubieras resuelto muy facilmente, quizás tengas que dar unas cuantas vueltas hasta ver como se hace usando la lógica de Cake.

    Por mi parte, desde que estoy usando frameworks, me siento mucho mas seguro. El desarrollo se hace mucho mas llevadero y fácil de mantener. Y lo mismo puedo decir de otros frameworks que estoy aprendiendo a usar/usando: JQuery y CSS Blueprint.

    ResponderEliminar
  11. Hola,

    Yo también hace poco he empezado a trabajar con este framework y estoy documentando mi proceso de aprendizaje en www.tutorialcakephp.wordpress.com. Si a alguien le interesa puede echarle un vistazo.

    No tengo mucha experiencia en el uso de Frameworks y no acabo de entender por qué decís que Cake deja de servir en proyectos grandes. En teoría, utiliza el patrón MVC, como todos los demás y, según tengo entendido, tampoco hay muchas más alternativas... ¿Qué decís?

    ¡Un saludo!

    ResponderEliminar
  12. Jordi, bienvenido al mundo de los frameworks!! No te arrepentirás, luego si usas CakePHP, ZendFramework, CodeIgniter o el que sea ya es otra historia, pero el hecho de tener todas estas librerías en tu mano es un gran paso.

    Cada framework tiene su filosofía de uso, en el caso de Zend tiene la ventaja que puedes usar un módulo/librería y nada mas, en el caso de Cake tienes que usarlo todo. Me imagino que para el que conoce mucho del tema podrá usar solo lo que necesita y descartar el resto.

    A mi CakePHP me parece uno de los que más facilidades dan para crear aplicaciones, por ejemplo crear un listado, formulario, validaciones y relaciones con Cake es muy fácil. Claro que el costo es que para facilitarte la vida a ti debe procesar más.
    Por eso, en una aplicación con un volumen enorme de visitas, seguro que se resiente, y que usar PHP en cueros es mejor! Llegado el caso, hay que optimizar...
    Para la parte privada (panel de control) de una web, Cake es muy bueno. para la parte publica, si hace falta MUCHO rendimiento, ya no estoy seguro si es la mejor opcion.

    En todo caso, no te arrepentirás de aprender y usar CakePHP

    ResponderEliminar