从面条式代码迁移到Symfony 2


Migrating from Spaghetti code to Symfony 2

我刚刚回到美国公司找到一份工作,我继承了一堆讨厌的php 4平面文件。我想迁移到Symfony 2,但是我没有办法获得重构整个东西的许可。

有没有人对将项目的小部分或部分迁移到Symfony 2有任何建议?也许我可以有一个包含整个旧代码库的目录,并从只使用Symfony 2中的路由来抓取旧的平面文件开始?

如果有人有什么建议,我很乐意听听。

首先,您是否询问过他们是否允许您重构应用程序?您可以基于以下内容构建业务案例:

  • 能够以更低的成本维护软件向前发展
  • 将更容易向其他开发人员介绍项目
  • 添加新功能会更容易

一个完整的重构可能不像你想象的那么复杂或耗时,它可以在维护旧应用程序的同时并行完成。

现在,做你建议的有点棘手。你必须考虑以下几点:

  • 能否在现有的数据库结构上使用ORM取决于它的设计有多好。
  • 很多php4代码不能在php5上工作,你可能最终会改变大量的代码,引入错误等。
  • 需要一些自定义代码以便在两个代码库上集成会话。

如果以上几点没有问题,你可以将php4结构添加到web文件夹中,以便它们可以直接访问,并开始在Symfony中构建每个屏幕时逐一替换路由。

这些建议非常有上下文背景。这实际上取决于你的应用程序有多复杂,以及它有多混乱。

祝你好运!

首先,将定制的前端控制器作为这些平面文件的前端。

你可以用mod_rewrite重定向旧的url到新的前端控制器。

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

路径可以通过$_SERVER['PATH_INFO']

在index.php中检索

从前端控制器,您可以处理一些细粒度的逐渐重定向到您希望移动到的任何罐装解决方案。对于那些你想要保留旧功能的url,一些include("./".$_SERVER['PATH_INFO'])可以做到。

我的建议是把它分成几个步骤。通常,管理层会接受一系列的小成本,而不是一次性的大成本。在迁移到Symfony2之前,我会专注于清理代码并准备好PHP5。

一旦代码干净,将Symfony2集成到您的项目中应该非常容易。