2011-11-03 8 views
8

Acabo de recuperar un trabajo en corporate america, y he heredado un desagradable montón de archivos planos php 4. Quiero migrar a Symfony 2, pero no hay forma de que obtenga permiso para volver a factorizar todo.Migrando del código de Spaghetti a Symfony 2

¿Alguien tiene alguna sugerencia para migrar partes pequeñas o secciones de un proyecto a Symfony 2? Tal vez podría tener un directorio con toda la base de código anterior y comenzar utilizando solo el enrutamiento en Symfony 2 para tomar los viejos archivos planos.

Si alguien tiene alguna sugerencia me encantaría escucharlos.

+0

Aplicar [la regla boyscout] (http://programmer.97things.oreilly.com/wiki/index.php/The_Boy_Scout_Rule)? Por otra parte, si no obtiene permiso para refactorizar todo, ¿por qué lo haría? –

+0

Soy un cazatalentos yo mismo :-) Creo que los problemas están ralentizando el desarrollo de características. Obviamente, a largo plazo, el desarrollo de características en una base de código de spaghetti se vuelve cada vez más lento, pero usted conoce estos tipos de administración. No ven ninguna diferencia en el front-end, ¿por qué dedicar tiempo a la infraestructura? ;-) – Clint

+0

Si realmente te importa, vuelve a desarrollar el sitio en un lado en el tiempo libre y luego simplemente presentarlo un día. – DampeS8N

Respuesta

3

Antes que nada, ¿ha preguntado si le permitirán refactorizar la aplicación? Se puede construir un modelo de negocio basado en:

  • Capacidad de mantener el software en el futuro a un costo menor
  • Será más fácil introducir otros desarrolladores para el proyecto
  • Será más fácil agregar nuevas características

Un factor de cambio completo puede no ser tan complicado o lento como usted imagina, y se puede hacer en paralelo mientras se mantiene la aplicación anterior.

Ahora, hacer lo que sugiere es un poco más complicado. Usted tiene que considerar lo siguiente:

  • Ser capaz de utilizar un ORM en la estructura de base de datos existente depende de lo bien que está diseñado.
  • Una gran cantidad de código php4 no funcionará en PHP5 y usted puede terminar cambiando una cantidad significativa de código, la introducción de insectos, etc.
  • se requiere algún código personalizado con el fin de integrar la sesión en ambas bases de códigos .

Si los puntos anteriores no son un problema, puede salir con la adición de la estructura php4 a la carpeta web para poder acceder directamente y comenzar a reemplazar las rutas una por una a medida que construye cada pantalla en Symfony.

Estas sugerencias son muy contextuales. Realmente depende de cuán compleja sea tu aplicación y cuán desordenada sea realmente.

¡Buena suerte!

+0

Solo mencioné que poner la aplicación en un marco sería una buena idea y mi jefe parecía un poco indeciso. Pero tienes razón, debería hacer una propuesta oficial. En cuanto a PHP 5, ya he actualizado la aplicación, por lo que funciona en php 5.3 ahora. Gracias a dios. Por el lado de ORM, en realidad estaré haciendo mis propias entidades personalizadas, ya que se accederá a la base de datos desde un servicio web, no directamente. El tema de la sesión es una preocupación muy real. Gracias por el aviso. También poner los archivos planos en el directorio web para comenzar es una gran idea. – Clint

+0

Acaba de probar su método sugerido, y parece funcionar bien. Hay algunos contratiempos, pero en su mayor parte funcionará y me permitirá agregar Paquetes para cada característica importante en el transcurso del tiempo. – Clint

+0

¡genial! Espero que encuentres una solución viable. Llevará un tiempo llevar la refactorización como una cultura a su empresa, pero a medida que gane más confianza como desarrollador [a cargo] con suerte tendrá más flexibilidad para tomar esas decisiones. A menos que su jefe sea muy conocedor de la tecnología, a veces es mejor omitir los detalles de lo que está haciendo y mantenerlo en un nivel muy alto. Si confían en su juicio, será más fácil avanzar con cambios más grandes. A veces tardan mucho menos tiempo de lo que piensas. – SuitedSloth

2

Antes que nada, coloque un controlador frontal hecho a medida como front-end para esos archivos planos.

Puede redirigir urls antiguas al nuevo controlador frontal con mod_rewrite.

RewriteRule ^/?(.*) /index.php/$0 
# this shall work in .htaccess (/paths) and in httpd.conf (non slashed local paths) 

Caminos se pueden recuperar a través de index.php $_SERVER['PATH_INFO']

Desde el controlador frontal que puede manejar algunas redirecciones graduales de grano fino a cualquier solución enlatada que desea mover a. Para las URL para las que desea conservar la funcionalidad anterior, algunos include("./".$_SERVER['PATH_INFO']) harán el truco.

1

Mi consejo es dividirlo en pasos. A menudo, la administración aceptará una serie de pequeños costos mucho más fácilmente que un gran costo por única vez.Me centraría en limpiar el código y preparar PHP5 antes de migrar a Symfony2.

Una vez que el código esté limpio, la integración de Symfony2 en su proyecto debería ser bastante fácil.

+0

Gracias por su conocimiento Steve. Sé que eres el hombre de Symfony. – Clint