Frameworks PHP

Respondiendo a una pregunta formulada por nuestro lector «Programador Java», os dejo unas cuantas líneas con MI opinión sobre algunos de los frameworks para desarollo de aplicaciones web con PHP más populares de la actualidad. Y para ti, ¿cuál es el mejor framework PHP?

Zend Framework

Logo del framework PHP Zend Framework
  • Probablemente, el framework más conocido, y el más utilizado profesionalmente.
  • Es muy desacoplado, por lo que mucha gente lo considera una librería de componentes más que un framework. Por otra parte, gracias a esto, podemos utilizarlo en conjunto con otros frameworks.
  • Tiene detrás a Zend, una de las empresas más importantes de la comunidad PHP, y gran contribuidora a su código desde sus primeras versiones.
  • Siempre ha habido quejas sobre su curva de aprendizaje y el tiempo necesario para comenzar un nuevo proyecto, aunque eso mejoró un poco con los componentes RAD (Rapid Application Development).
  • Recomendado para proyectos grandes.

Symfony

Logo del framework PHP Symfony
  • El framework que suele utilizar Yahoo, por ejemplo. Bastante popular hoy en día.
  • Más complejo y elegante que CakePHP y CodeIgniter, pero menos que Zend.
  • Muy completo.
  • El «azúcar sintáctico» y la generación de código ayuda a recortar el tiempo de desarrollo.
  • Recomendado para cualquier tipo de proyecto, en ocasiones combinado con algún componente de Zend.

CakePHP

Logo del framework PHP CakePHP
  • Toma muchas de sus ideas de Ruby on Rails, por lo que gustará especialmente a los fans de la autoconfiguración y de lo «mágico». Debido a esto, no es lo más adecuado para aquellos que quieran tener un mayor control.
  • En su tiempo tenía fama de tener muy mala documentación. Hoy en día eso ha cambiado.
  • Recomendado para proyectos no demasiado complejos, en ocasiones combinado con algún componente de Zend.

CodeIgniter

Logo del framework PHP CodeIgniter
  • Probablemente, el menos popular de los cuatro.
  • Muy flexible y sencillo. A menudo demasiado, obligando al programador a desarrollar muchas funcionalidades que deberían incluirse por defecto.
  • Muy fácil de aprender, principalmente porque no hay mucho que aprender, al ser simple hasta el extremo.
  • También es el que menos recursos utiliza, al ser el más ligero.
  • Está escrito para mantener la compatibilidad con PHP 4, por lo que no aprovecha muchas de las características introducidas en PHP 5. Debido a esta y a otras razones muchos de sus desarrolladores se desvincularon del proyecto para crear un fork llamado Kohana.
  • Sólo recomendable como framework de iniciación, si el resto intimidan demasiado; o para aquellos a los que realmente no les gusten los frameworks.

78 comentarios en «Frameworks PHP»

  1. Como alternativa a codeigniter podéis echarle un ojo a f-engine.net

    Se basa en el primero, pero añade varios automatismos y aplicaciones web que hacen que el desarrollo sea bastante más rápido.

      1. jamas he usado kohana, pero revisando un poco por encima la documentación diría que f-engine es muchísimo más fiel a codeigniter (En realidad trae más añadidos que modificaciones sobre el framework base).

  2. Programé unos 10 años en PHP sin un framework, hasta que hace un tiempo tras no poder lograr lo que quería con Cake pasé a CodeIgniter. Me sentí identificado con la ultima entrada de tu lista =). Como para mitigar la simpleza del framework, se pueden encontrar multitud de helpers y librerias contribuidos por los usuarios. Me voy a ver qué onda con f-engine (gracias Mikel).

    Zootropo: recibiste mi mail?

  3. Frameworks hay muchos, la lista es casi infinita… pero un consejo si les doy: si recién se inician a conocer un framework, siempre decídanse por los más relevantes.

    Y este artículo atina perfectamente con los 4 más famosos… aunque si fuese a mencionar a un quinto adicional, sin duda sería kohana.

    Los demás sobran… prometen mucho pero no cumplen las expectativas.

  4. Los desarrolladores no corrieron a hacer kohana, los ususrios, Ellis Labs está detras e Codeigniter, y la supuesta desventaja de que no use lo mejor de php5 tambiés en una ventaja porque corre en php4 aunque esto cambiara con ci2

      1. De verdad que PHP4 no es tan bueno como PHP5 pero no siempre esta disponible, hay empresas que tienen servidores obsoletos solo con PHP y un ODBC a una base de Access así que el soporte para PHP4 puede ser bueno, en lo eprsonal ya no acepto trabajos así.

      2. No se porque te da risa PHP4, el que no tengas talento para desarrollar cosas interesantes con PHP4 no deberia causarte risa, yo vengo del C/C++ y PHP4 me parece una buena herramienta comenzando con esta version me puse ha desarrollar un motor de base de datos (todo codigo PHP) la que corre sin problemas en PHP4 y PHP5 y pronto lo pondre a disposicion de la comunidad PHP, a mi me causo risa tu comentario respecto de PHP4.

    1. ¡Bueno! ¿Ahora van a venir todos a decir que su framework es de los más utilizados? En Amazon sólo veo que haya un único libro sobre Yii, que es Agile Web Application Development with Yii 1.1 and PHP5.

      De Zend por ejemplo tienes:
      Pro Zend Framework Techniques: Build a Full CMS Project
      Zend Framework, A Beginner’s Guide
      Beginning Zend Framework
      Zend Framework 1.8 Web Application Development
      Zend Enterprise PHP Patterns
      Zend Framework in Action
      Zend Framework: The Official Programmer’s Reference Guide
      Easy PHP Websites with the Zend Framework
      php/architect’s Guide to Programming with Zend Framework
      The Definitive Guide to Zend Framework
      etc

      Y resultados en Google Yii framework tiene 365.000 cuando Zend tiene 3.470.000. Casi 10 veces más.

      Así que lo mismo Yii es muy buen framework. Pero no me digas que es muy utilizado porque no es así.

        1. Si es peor porque tienes mucha menos documentación, una comunidad más pequeña, menor número de plugins, es mucho menos útil a nivel de curriculum….

          Y a cambio ¿qué ofrece que no tenga Symfony?

  5. Como dice Juan, Kohana comenzó como un fork desarrollado por un grupo de usuarios descontentos con el rumbo que tomaba CI.

    Hoy en día no se puede decir que sea un fork, se ha reescrito hasta la ultima linea y sin duda alguna es uno de los mejores frameworks php5.

    El mayor problema que arrastra y por lo que en mi opinión no ha conseguido la popularidad merecida es la falta de documentación, algo que la comunidad esta intentando solucionar, pero que avanza de manera muy lenta.

    No es que sea una herramienta para principiantes, pero animo a cualquiera que esté buscando un framework a probarlo y sacar sus propias conclusiones.

  6. La verdad que encontramos un abanico de posibilidades para mejorar nuestra programación con PHP, desde hace más de 2 años utilizo Symfony y los resultados son asombroso.

    Saludos!

  7. Lo que pasa con yii es que es un framework mucho mas moderno que el resto. De ahi sus mejoras y la menor cantidad de resultados en google y amazon. Yo no uso un framework, mejor dicho me adecuo a cualquiera, todos tienen sus ventajas y desventajas. Pero desde la experiencia de un desarrollador PHP con casi 10 anos de trabajo te puedo garantizar que yii es el mejor de todos.

    1. Zend Framework se lanzó en julio de 2007.
      Yii en octubre de 2008.

      Difícilmente se puede atribuir la diferencia de popularidad a que sea 1 año más joven.

      Yo también llevo bastantes años con PHP y si acaso recomendaría Yii a principiantes nada más.

  8. Coincido con Loganfede. Actualmente siempre que puedo, desarrollo con Yii.

    Llevo con Zend desde la versión 1.5 y Yii desde que salió (y anteriormente en Codeigniter, dos años atrás.), y aunque Zend es muy útil al estar concebido como un conjunto de componentes independientes, preparar un stack puede resultar un infierno.

    En cambio Yii lo ofrece ya hecho (a la CI), pensado para hacer aplicaciones y a menudo bastante mejor documentado que Zend con el que me he pasado más tiempo buceando en su código que haciendo una aplicación.

  9. hola, tengo una duda, soy un profesional freelance programador PHP, siempre desarrollo mis propios scripts o reuso scripts que encuentro en internet para ahorrar algo de tiempo pero hay una pregunta que siempre me ronda, es la siguiente: las empresas de desarrollo en PHP, en su mayoría programan su propio framework, es decir desarrollan desde 0 o casi o normalmente usan un framework como CodeIgniter, Cake PHP, Zend…?

    muchas gracias.

    1. Lo de crear desde cero o adoptar uno, como siempre, depende de la empresa.

      Las ventajas del uso de un framework respecto a scripts ad-hoc estriban en que en un framework tienes los componentes organizados, documentados y probados, y tienes una entidad (empresa, fundación, resposable, etc.) y una comunidad que lo extiende y lo mejora (a veces).

      A nivel de empresa, si tienes más de un desarrollador, los frameworks son una forma de tender a la organización (nada evita el código basura). Por otro lado, incrementa la productividad disminuyendo los períodos de i+d relacionados con un «código nuevo» o intentando entender un «código viejo».

      Espero haber sido de ayuda.

  10. Yo vengo de usar CI y de pasar por Symfony, y por allá por 2006 cuando Zend era Beta, le di una mirada, pero desde que probé YiiFramework hace casi dos años, me reunió lo que buscaba, la elegancia de Symfony, la velocidad de CI, la estructura de componentes de CakePHP y por qué no, la genialidad de Ruby On Rails. Actualmente, muchos de los componentes de ZF están migrados como extensiones de Yii. Altamente recomendado.

      1. Lo enfocas mal, el orm es para eso, para el select *, prueba a hacer consultas com procedures, transacciones o algo realmente complejo… te puedes pegar un tiro con Doctrine, y no ya por saber o no usuarlo, sino por las limitaciones intrinsecas que conlleva hacer que funcione para cualquier base de datos y sobre todo la capa de persistencia que puede comerte los recursos.

  11. Pues yo este año me decidi a probar un framework para un proyecto y despues de una buena busqueda en foros y sitios decidi que lo mejor seria irse por symfony, tiene una excelente documentacion, hay una gran cantidad de desarollos (plugins), y ha sido utilizado para proyetos a gran escala, el unico pero podria ser que tiene una curva de aprendizaje mayor, pero que vale la pena….

    Si van a empezar yo les recomiendo symfony sobre cualquier otro framework…

  12. experiencia con los 3 últimos de varios años, sin duda alguna Symfony no tiene comparación

    hasta me parece injusto comparar a los pobres Cakephp y codeigniter con fw’s de verdad como symfony y zend -.-

    1. Son algo retrasados mentales ustedes ? defienden lo indefendible con argumentos ridículos, quieren decir que la mejor o verdadera Framework es la mas difícil y pesada ? eso se me hace contradictorio. Yo sin tener una Framework tan sólo con unas librerias que desarrolle puedo programar lo mismo que Zend pero en mucho menos tiempo y mucho menos código.

      1. Cuando uno tiene argumentos para defender su opinión recurre a los argumentos, no a los insultos.

        Symfony y Zend no son dificiles ni pesados. Son más más complejos, que no es lo mismo, y lo son porque son más ambiciosos, simplemente.

        1. Solo reproduje lo que aqui mismo se plantea y se dice textualmente «si el resto intimidan demasiado», no soy quien para pedirte explicaciones pero tus argumentos siguen siendo vagos nada consistente, lo siento no era mi intension insultar a nadie pero a veces lo que no es cierto exaspera.

          1. Si es tu primer día de colegio te pueden intimidar las sumas. Eso no significa que las sumas sean complicadas.

            Creo que es bastante obvia la diferencia.

    1. si, son interesantes. Todo los trabajos desarrollados son buenos, fueron diseñados con un proposito y es correcto reconocer el esfuerzo de esas personas; eso comprendi al intercambiar comentarios en este mismo foro blog.

  13. Pingback: IDEs para PHP

  14. Bueno soy de cakephp, en este link pueden encontrar una herramienta para poder comparar en algunos aspectos los framework mas conocidos.

    http://www.bestwebframeworks.com/

    ejosvp dime una sola cosa que se pueda hacer con symfony que no se pueda hace con cakephp. Bueno decir que symfony no es compatible con php4, todos sabemos que php4 es historia pero que symfony no sea compatible con php4 no es precisamente una ventaja, sin embargo cakephp es compatible con php4 y php5.

    No estoy muy de acuerdo con este post, muy defensores de zend, todos los framework tienen ventajas y desventajas uno frente a otro.

  15. Veo muchos comentarios en contra o a favor de Frameworks y no lo acabo de entender. Te puede gustar más un framework u otro, pero no creo que CodeIgniter o Yii sean para principiantes y los otros para expertos.

    Más bien depende de las necesidades de cada proyecto, para un proyecto enorme que correrá en servidores muy potentes será más adecuado utilizar un Framework con mayor funcionalidad, como Zend o Symphony. Si por el contrario se trata de un proyecto pequeño será más adecuado utilizar uno más ligero que te facilite la construcción de gran parte del código, sin tener que arrastrar una aplicación con muchas funcionalidades que no requieres.

    Personalmente he utilizado Symphony para un proyecto mediano, me ha gustado su estructura y funcionalidades, aunque es un tanto pesado.

    Ahora mismo estoy comparando Frameworks para proyectos pequeños y me estoy debatiendo entre 3 opciones: CodeIgniter, Kohana y Yii. Ambos son muy ligeros y ofrecen distintas cosas…

    En principio me iba a decantar por CodeIgniter (antes de saber de Yii) pero hay varios puntos que no tengo muy claros, por ejemplo no está definida una buena forma de hacer un layout y luego vistas sobre ese layout, no te crea las clases para interactuar con la base de datos directamente (modelo), etc. Los problemas y ventajas con Kohana son similares, tengo que analizar más detenidamente Yii.

    Resumiendo, puede haber Frameworks malos, buenos o muy buenos, pero los más conocidos son todos buenos, lo que importa es que necesidades tienes y cual se adapta mejor a ellas, sin olvidarnos de la forma de trabajar de cada uno

  16. Pingback: Weveloper.com » ¿Frameworks? Aahm… eso.

  17. Pingback: IDEs para PHP | Saca La Nevera Del Congelador

  18. muy interesantes los fw… pero m decido por mi propio fw.. dde conozco cada linea de codigo de todos los archivos y se q es lo hace cada una de ellas….. osea… control absoluto de todo…. no m gusta utilizar un codigo sin saber que es lo q hace…. y sin antes entender su codigo… y quien se va a poner haber 1000 o mas archivos q tiene un fw….

    1. La verdad no veo con buenos ojos estas Framworks lo mismo tengo que escribir bastante codigo en aplicaciones no muy grandes aunque el esfuerzo de los autores es loable quizas habra que espera a las siguientes versiones porque la mosma filosofia de funcionamieto esta orientado a no facilitar o reducir la escritura de codigo en proyectos medianos y ni decir de los grandes.

        1. No exactamente, como dije utilizo mis propias librerias con codigo reutilizable obviamente. No es dificil comprender yo no defiendo lo indefendible solo resalto lo que aqui resulta exageradamente evidente.

          1. Código que has tenido que escribir cuando hay decenas de soluciones ya implementadas por personas con mayor experiencia.

            Tiene toda la lógica del mundo.

            Ya que te pones, podrías haber creado tu propio lenguaje de programación.

  19. Pingback: Una no tan breve historia de PHP

  20. He usado el YII, es bueno en la aplicaciones sencillas con db, sin embargo pienso que no se puede usar para todo tipo de aplicaciones porque no muesras las vista satisfactoriamente en ocasiones…

  21. Considero que cuanto mayor es la compatibilidad entre las versiones de PHP es mejor la aplicacion. Veo bastante complicadas para los programadores incluso de nivel medio, o quizas mi apreciación no sea la correcta quizas sea la minúscula o pésima documentación lo que las hace temibles.

  22. Tweet creo que te equivocas en tu análisis. ¿Qué se busca con Framework como herramienta? ¿acaso no es facilitar el proceso de desarrollo?. Si la Framework intimida es por la falta de imaginacion (capacidad intelectual inferior a la requerida para este tipo de proyectos) de sus desarrolladores que no encuentran el camino para integrar una aplicación potente y facil de utilizar. Si el desarrollo con PHP codigo nativo intimida y se desarrollan herramientas para este problema, entonces me desconcierta lo que publicas.

  23. En resumen si estas son las mejores Frameworks para PHP me quedo con mis librerias que me permiten desarrollar con muchisimo menos codigo y tiempo aplicaciones Web, y puntualizar que no se trata de lanzar un producto que sea terriblemente complicado de aprender hasta intimidatorio como se expone arriba para catalogarlo como la mejor en su categoria, se trata de proporcionar una herramienta que permita a los desarrolladores salvar lo complicado que puede resultar para algunos el desarrollo con codigo nativo de PHP.

    1. En vez de intentar reinventar la rueda deberías aprovechar el trabajo de decenas de personas que saben más que tú.

      Creo que tu problema es, simplemente, una cierta pereza para el aprendizaje, que te lleva a intentar defender lo indefendible.

  24. Eso de reinventar la rueda es para mentes pequeñas por lo visto el que sepan mas que yo no es suficiente, quizas me anime a reiventar mi rueda porque de momento solo tengo unas librerias y por cierto aportan mayores prestaciones que lo que vi en sus Frameworks.

    1. Isaac Newton dijo una vez

      If I have seen further, it is by standing upon the shoulders of giants

      ¿Algún enlace para poder ver tus fantabulosas librerías con mayores prestaciones que Zend? Porque grandes afirmaciones requieren de grandes pruebas 🙄

    1. Precisamente.

      No creo que exista esa maravillosa librería de las que tanto te enorgulleces, y que según tú es más completa que Zend y más sencilla que CodeIgniter.

      De ser así, no tienes más que comercializarla. Te harás de oro.

      Lo que no sé es qué hago yo discutiendo con alguien cuyos mayores argumentos hasta ahora han sido un insulto y una utopía.

  25. jajajajaj muy listo, nunca dije que fuera mas completa que Zend dije que permitia rapido desarrollo no pretendo desmerecer los logros que ha obtenido PHP y todo las herramientas relacionadas porque en conjunto son un excelente adversario que frena los planes hegemonicos de Microsoft es mas pienso colaborar con esta comunidad mas adelante. Si aceptas un desafio tu con cualquier Framework y yo con mis librerias para desarrollar un sencillo sitio Web.

  26. habilitare un dominio gratuito para poner unos ejemplos sencillos y el codigo que los genera. Lo siento me porte muy mal.

  27. Bueno he aqui un ejemplo con mis librerias esto es el codigo que genera el mantenimientode un archivo de datos.

    array ( 0 =>»ID»,DCHAR,»4″,KEYPRIFIELD,»NOAUTO»,LEFTLABEL,CTEXTBOX,»»,NOALIGN,»6″,NOHEIGHT,0,1,3),

    array ( 0 =>»Título»,DCHAR,»100″,NORMALFIELD,»NOAUTO»,LEFTLABEL,CTEXTBOX,»»,NOALIGN,»40″,NOHEIGHT,0,1),

    array ( 0 =>»Autor»,DCHAR,»100″,NORMALFIELD,»NOAUTO»,LEFTLABEL,CTEXTBOX,»»,NOALIGN,»40″,NOHEIGHT,0,1),
    array ( 0 =>»Estado»,DINT,2,STATEFIELD,»NOAUTO»,LEFTLABEL,CTEXTBOX,»1″,NOALIGN,»3″,NOHEIGHT,0,1)
    );
    mymain(«default»);
    function mymain($pvWhat=»»)
    {
    global $DatPr;
    Encabezado(«Probando base de datos»);
    $vCmd=g_GetEventCmd();//captura todos los eventos clic
    $lsContent=c_ListFile(«1″,»»,»»,$DatPr,»NODB»,»book01.hcm»,0,10,db_InsAddCmd(«1″,»Nuevo»,»»,»NODB»,»book01.hcm»));
    if($vCmd==DB)
    $lsContent=db_DBProcess();
    Body($lsContent);
    Pie();
    }
    function Body($pvContent)
    {
    g_bMyDiv(«0»,Prop(atID(«cuerpo»)),st(Position(«relative»),Index(101),Left(1),Top(50),BackColor(«YELLOW»),Border(«silver»),TextAlign(«left»)),$pvContent);
    }

    ?>

    y si no se entiende pueden verlo aqui: http://www.dbphp.tk

    1. Entre otras cosas, deberías leer sobre por qué las variables globales se consideran en general una mala práctica, acoplamiento, desventajas de mezclar lógica de negocio y presentación y patrones arquitectónicos, como MVC.

      1. eso es lo de menos la puedes declarar localmente antes de su llamada de la logica se encarga la funcion g_WhatEventCmd() que es la que captura cualquier evento clic procesable sea el submit de un formulario o un link de acuerdo a lo que esta funcion retorne se puede utilizar un switch para procesar segun la opcion seleccionada.

          1. Muchas gracias por los consejos evidentemente eres una persona que conoce bastante sobre el tema, mi idea va por presentar una logica transparente y facil aunque en lo que mostre no se hace evidente eso, Como me dijiste en otro comentario hay personas que saben mucho mas que yo eso es verdad soy relativamente nuevo en PHP quizas medio año o un poco mas y en verdad muchas gracias por tus consejos.

  28. yo creo que todo depende…

    Estoy hace una semana tratando de escoger un framework para empezar a desarrollar un proyecto personal, ya pase por los famosos, y en todos me quede en que ya tengo la base de datos y ninguno tiene una opcion decente para generar los modelos; a esto sumele que cuando se tienen los modelos se tiene que construir los controladores… entonces que carajos construye el framework? para una estructura de carpetas estan los scripts, y para las librerias estan los includes, un ejemplo con zend:
    http://framework.zend.com/manual/en/learning.quickstart.create-model.html

    y eso era el quick start… todos los frameworks funcionan parecido, symfony me dio la opcion de generarlas a partir de un yaml pero al final nunca encontro los pdo en linux por mas que los configuré…

    ahora llevo 1 semana en prueba y error a ver con cual me quedo, con el que arranque quien sabe cuanto me demoraré si me toca investigar como hacer todo en el framework…

    Definitivamente los frameworks no son para proyectos sencillos o rapidos (asi usen esos proyectos como ejemplos por lo sencillo que son)… son para proyectos que sabes que van a crecer en modularidad y funcionalidad…

  29. Creo que es cuestion de entenderlas, las Frameworks son un gran trabajo estoy leyendo bastante sobre ellas y ahora comprendo que cometi un error al criticar su forma de trabajo.

  30. Pingback: Crear un framework en PHP5 desde cero (1ª Parte) » El blog de Suenyos.Com

  31. Es muy meritorio el trabajo de tantas personas desarrollando tanto software libre, todos los frameworks tienen su trabajo y han sido pensados en necesidades de usuarios diferentes. Llevo 8 años desarrollando en PHP y tome la desición hace 4 de desarrollar uno propio. ¿Por que? En la empresa donde trabajo nacieron requerimientos urgentes, propios de la unidad de negocio misma de la compañia, lo que me obligo y a mismo tiempo fue una necesidad desarrollar una herramienta que fuera util para desarrollar las tareas diarias en el menor tiempo posible. Hace un poco mas de un mes tengo una version muy estable.

    Los invito a que analicen http://www.osezno-framework.org

    Es un framework basado en la idea de la simplisidad pero lo suficientemente robusto para cubrir las necesidades en una empresa. El framework lleva 2 años en produccion en la empresa, eso dice algo. Queria dar mi granito de arena para este proposito pero ademas decirles que no desmeriten el trabajo de las personas que desarrollan este tipo de software pues son las que estan innovandon constantemente.

    Miren los demos y analicen el codigo, es muy sencillo de usar.

    Gracias por su atencion y valoracion de este proyecto 🙂

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.