PHP básico a Symfony2 considerando lo básico

Hace unos días un cliente nos encomendó el trabajo de mantener un sitio que habían comenzado a desarrollar. El sitio era PHP plano, sin mucha organización apreciable. Y entre el mantenimiento solicitado también estaba el de desarrollar algunas funcionalidades nuevas.

Como siempre el tiempo para terminarlo era el día anterior al que nos lo den, por lo que mucho menos había tiempo para hacerlo todo de nuevo, teníamos que vivir con el sitio tal cual estaba, y agregarle más información.

Nuestra decisión fue ir reemplazando partes del sitio de a poco por una estructura que nos gustara más. Decidimos crear un proyecto de Symfony2 y dentro de la carpeta web de Symfony crear una carpeta legacy donde poner todo el código legado que teníamos.

Luego, modificamos el .htaccess de la carpeta web para delegar TODAS las páginas al directory legacy (utilizando mod_rewrite de Apache2), que tambíen venía con su propio .htaccess para hacer algunas “pretty url” (para optimización SEO) de forma casera.

Lo que conseguimos fue que a pesar de estar en otro directorio, todo el sitio siguiera funcionando, con exactamente las mismas URLs.

Teniendo esto implementado, nuestra idea era ir modificando el .htaccess del directorio web para que las rutas que de a poco iríamos implementando con Symfony en lugar de ir al directorio Legacy, fueran al controller de Symfony.

Entonces implementamos alguna pagina del sitio que nos pareciera simple, pero con Symfony, y configurando en los routes de symfony la misma url que hubiera tenido la original. Accediendo utilizando app_dev.php mientras estabamos desarrollando, una vez terminado el desarrollo modificamos el .htaccess para que esa ruta en lugar de ir al sistema legado, fuera al controller de Symfony.

Al hacer esto se nos planteó el primer problema.

  • Los links al resto del sistema, que aun estaba en legacy, no podían ser generadas por symfony, así que todas las rutas que utilizamos en las páginas, fueron rutas absolutas. Cuando tengamos mayor parte del sitio migrada tal vez las iríamos convirtiendo a path de Symfony.

Luego hubo otro problema con el encoding de la base de datos.

  • La base de datos tenía algunos datos como UTF8, otros como latin1, las tablas estaban mal definidas. Decidimos pagar el precio de tener algunos problemas de encoding. Mitigamos este costo en zonas importantes utilizando utf8_decode para algunos datos (creamos un filter de twig para aplicar la funcion al mostrar los datos) pero rápidamente pudimos atacar las áreas problematicas y arreglar la base de datos.

Luego de tener esta estructura funcionando, y sintiendonos más seguros con el camino elegido, el resto fué (y esta siendo) bastante tranquilo, sin grandes sobresaltos.

Es para comentar en otro post el como resolvimos el tema de encoding de la base de datos, y como pudimos, gracias a Symfony, adaptar parte del sitio a un tab de facebook sin modificar ni un solo controller.


One Response to “PHP básico a Symfony2 considerando lo básico”

  1. […] siendo procesados por Symfony (el sitio era un hibrido entre symfony y un sitio legado. Ver post Nuestra experiencia extrangulando un sitio) no teníamos control sobre cómo se generaban, por ello no podíamos desde PHP fácilmente […]

Discussion Area - Leave a Comment