Mostrando entradas con la etiqueta cakephp. Mostrar todas las entradas
Mostrando entradas con la etiqueta cakephp. Mostrar todas las entradas

CakePHP: Pros y contras (según mi opinión)

4 comentarios

Actualmente llevo ya más de 2 años trabajando con el Framework de CakePHP 1.2. No elegí yo trabajar con este framework, pero se me impuso en su día y al principio tengo que reconocer que me pareció una buena idea. Hasta ahora, que lo conozco bien y conozco sus mayores defectos (y seguro el de la mayoría de frameworks), por lo que en el futuro procuraré evitar cometer los mismos errores.

Voy a comentar mi punto de vista sobre el Framework, aunque tampoco me extenderé mucho. Empezaré por las ventajas.

PROS

  1. Fácil de aprender: Hay que reconocer que desarrollar con CakePHP es fácil y sencillo una vez te has documentado un poco y conoces la estructura de ficheros. Sin conocerlo de nada, en 2 días ya estaba creando mis primeras pantallas con el.
  2. Implementación rápida: Gracias a su estructura y los métodos propios del framework, desarrollar una aplicación puede realizarse en poco tiempo, eso si, en relación a si hubiera que hacerlo de 0, o si la aplicación no necesita modificaciones personalizadas.
  3. Migración entre entornos: Instalar una aplicación desarrollada con CakePHP es muy fácil, ya que  si tienes bien configurado el servidor en el nuevo entorno, bastará con copiar y pegar el código en el nuevo entorno. No necesita muchas librerías especiales, pero repito, depende de la aplicacuón y los componentes o plugins que se le añadan.
  4. Plugins: Mencionados en el punto anterior, se pueden encontrar por internet plugins que realizan una tarea específica sin tener que programar nada. Basta con bajarse el código y añadirlo a la carpeta de plugins de CakePHP. Lo mismo pasa con algunos "componentes" y "helpers".
Hasta aquí las ventajas más significativas que voy a comentar de CakePHP. Ahora pasaré a lo que para mi, es motivo suficiente como para no volver a utilizarlo en futuros proyectos:

CONTRAS
  1. Malos hábitos: En su documentación oficial, en algunos puntos te motivan a realizar algunos malos hábitos que deberían evitarse al trabajar con cualquier tipo de Framework MVC. Por ejemplo, con el método "find" de los modelos. Realizas la llamada desde el controlador, construyendo allí mismo la consulta, pero con el formato de CakePHP, enviando arrays. En mi opinión, todas las consultas find deben hacerse en el propio modelo, creando métodos allí que son los que realmente deben llamarse desde el controlador. Solo me pareció ver una referencia a esta forma de trabajar en la documentación de CakePHP, en uno de los últimos puntos de "recomendaciones", aunque ahora mismo tengo dudas. Además, con este sistema es mucho más sencillo poder cachear las consultas y queda el código mucho más limpio y ordenado. Ejemplo de llamada desde el controlador:
    $specificallyThisOne = $this->Article->find(
        'first', 
        array(
            'conditions' => array('Article.id' => 1)
        )
    );
    
  2. Exceso de consultas: En proyectos en los que el número de tablas es muy elevado y hay muchas relaciones, el ORM de CakePHP puede llegar a realizar excesivas consultas. En proyectos pequeños con pocas tablas esto no suele suceder o no suele ser tan importante, pero cuando hay más de 10 tablas esto puede ser un gran problema. La facilidad de CakePHP se compensa con su mal rendimiento en proyectos grandes. En CakePHP 2.0 dicen haber mejorado bastante el rendimiento, pero aún así el sistema de consultas es idéntico y sigue existiendo este mismo problema.
  3. Tamaño de ficheros: Algunos de los ficheros del propio Framework son demasiado pesados. Esto, añadiendo que hay demasiados ficheros del framework a los que se accede prácticamente en cada petición (request), conlleva a un elevado número de accesos al disco que penalizan el rendimiento del servidor, haciendo que el tiempo de carga de la web se eleve considerablemente. La única solución para esto utilizar un servidor que compile los ficheros PHP para agilizar esta tarea (Por ejemplo: Apache + APC).
Consejo
Antes de utilizar un framework para realizar una aplicación importante, de gran envergadura, documentate bien sobre los pros y los contras que tendrá ese Framework y si cumplirá tus expectativas a medio y largo plazo (a corto casi siempre lo hacen). Puedes verte obligado a tener que reescribir todo tu código si tomas una mala decisión o te pasas los pasos principales de todo desarrollo.
I+D, Análisis, desarrollo, guía de uso. Esto nunca debería faltar.


Reflexión personal.
¿Programadores?Esto ya es un problema más general de la informática en general, pero que lo aplicaré a CakePHP en este caso. En este mundillo, hay mucha gente que ha trabajado duro para realizar algunas aplicaciones, frameworks, o cms para facilitar las tareas a los que no son informáticos. El problema de esto es que muchos usuarios finales que no saben más que utilizar estas "facilidades" empiezan a creerse gurús. Cuidado con este tipo de gente, son muy peligrosos y están sueltos.