Mis relaciones con los framework PHP han sido de amor y odio. Por una parte resultan necesarios para no tener que reinventar la rueda una y otra vez, pero por otra parte pueden suponer un cuello de botella a la hora de buscar un buen rendimiento para tu aplicación.
En aplicaciones puras ExtJS esto se vuelve especialmente cierto, donde la aplicación del servidor básicamente se debe preocupar de ofrecer una buena API a la aplicación cliente, quien se encarga de todo el aspecto de visualización.
Tradicionalmente he utilizado Code Igniter y me ha ido muy bien. Un framework liviano y muy intuitivo, aunque habían ciertos detalles que no terminaban de encajarme 100% debido a su pobre sistema de i18n o sus sesiones basadas en cookies.
Recientemente he empezado a utilizar DooPHP, un framework donde el rendimiento es casi una obsesión. Realizan benchmarks periódicos comparándolos con otros frameworks y llama la atención que sea mucho mas rápido que otros framework como Yii o el propio Code Igniter, frameworks que ya de por sí están muy optimizados.
De momento no he profundizado mucho, pero sí lo suficiente para hacerme una idea de lo que ofrece el framework. A continuación desgloso algunos de los detalles más importantes:
- Soporte para entornos: permite indicar si nos encontramos en entorno de desarrollo o en producción. El propio framework realiza determinadas optimizaciones en caso de encontrarnos en un entorno de producción.
- Esquema MVC: Como la mayoría de frameworks, DooPHP se basa en el esquema Modelo-Vista-Controlador.
- Sistema de templates compilados: para generar las vistas DooPHP se basa en plantillas (templates) y en sistema de etiquetas especiales, y el propio framework las compila a PHP en entorno de desarrollo para incluir únicamente las versiones compiladas en el momento en que estemos en producción. De esta forma se consigue eliminar la sobrecarga que implica tener que interpretar las plantillas al generar cada vista.
- i18n: ofrece soporte multi-idioma, donde podemos utilizar varios métodos de gestión de idiomas: gettext, cvs, array o ini.
- Soporte de varios adaptadores de base de datos: el framework soporta MySQL, PostgreSQL y SQLite. Supongo que con el tiempo irán incluyendo más adaptadores, pero de momento es suficiente para la mayoría de proyectos.
- Soporte explícito de configuraciones Maestro/Esclavo para BBDD: Me ha llamado la atención la posibilidad de configurar la base de datos en Maestro / Esclavo, donde las escrituras se realizan únicamente en el maestro y las lecturas las realizan los esclavos. Personalmente pienso que estos detalles no deberían estar expuestos a nivel de aplicación y las configuraciones Maestro /Esclavo deberían hacerse entre bambalinas, pero no deja de ser una opción interesante cuando no disponemos del control total de nuestra infraestructura.
- ORM: en la capa Modelo del MVC, la clase DooModel nos da la posibilidad de definir nuestros modelos así como las relaciones entre ellos, ofreciendo funcionalidades de ORM que nos facilitarán la recuperación y persistencia de los modelos entre nuestra base de datos y nuestros objetos de aplicación.
- URL routing y soporte RESTful: al igual que otros frameworks, podemos configurar las URL de nuestra aplicación, mepeándolas directamente o mediante patrones a distintos controladores de aplicación. También nos permite definir qué operaciones HTTP estarían permitidas para cada ruta (GET, POST, DELETE y PUT), facilitando la creación de APIs REST en nuestra aplicación.
- Fácil configuración: únicamente dispone de 3 ficheros de configuración. Uno para la aplicación (common.conf.php), otro para definir las rutas (routes.conf.php) y otro para definir las configuraciones de conexiones a base de datos y los modelos de nuestra aplicación (db.conf.php)
- Generación de código: podemos generar automáticamente controladores de aplicación en base a la configuración de rutas especificada en routes.conf.php, así como generar automáticamente modelos de aplicación en base a la configuración de modelos especificada en db.conf.php.
- Soporte de varios sistemas de Cache: XCache, MemCache, APC, eAccelerator.
En general el framework tiene buena pinta. No es un framework tan limpio y bien documentado como podría ser Code Iginter o Yii Framework, pero sí que tiene pinta de ser bastante rápido.
De momento voy a darle una oportunidad, a ver qué tal nos llevamos.
maki says
Es excelente el framework. Hace tiempo quen no se actualiza pero noa le pide nada a los frameworks que mencionas. Uso este y el lithium. El laravel también está muy bien.
diseño páginas web says
Yo lo he usado en un proyecto y mi experiencia ha sido muy gratifcante. Ahora estoy encarando el segundo proyecto a ver que tal se me da.
Mateo says
En este sitio hay un buen post, sobre este tema. http://ondrios.com/blog/iniciacion-tutorales-doophp-y-twig-aplicaciones-web-2-0/