从Spaghetti代码迁移到Symfony 2

时间:2011-11-03 14:51:57

标签: php symfony

我刚回到公司美国工作,我继承了一堆讨厌的php 4平面文件。我想迁移到Symfony 2,但我无法获得重新考虑整个事件的许可。

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

如果有人有任何建议,我很乐意听到。

3 个答案:

答案 0 :(得分:3)

首先,你问过他们是否会让你重构申请?您可以基于以下内容构建业务案例:

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

完整的重新因素可能不像您想象的那么复杂或耗时,并且可以在维护旧应用的同时并行完成。

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

  • 能够在现有数据库结构上使用ORM取决于它的设计程度。
  • 很多php4代码无法在php5上运行,最终可能会更改大量代码,引入错误等。
  • 为了在两个代码库上集成会话,将需要一些自定义代码。

如果以上几点不是问题,您可以放弃将php4结构添加到Web文件夹,以便可以直接访问它们,并在Symfony中构建每个屏幕时逐个替换路由。 / p>

这些建议非常具有背景性。这实际上取决于您的应用程序的复杂程度,以及它的真实程度。

祝你好运!

答案 1 :(得分:2)

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

您可以使用mod_rewrite将旧网址重定向到新的前端控制器。

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

然后可以通过$_SERVER['PATH_INFO']

在index.php中检索路径

从前控制器,您可以处理一些细粒度的逐渐重定向到您想要移动到的任何固定解决方案。对于要保留旧功能的网址,有些include("./".$_SERVER['PATH_INFO'])可以解决问题。

答案 2 :(得分:1)

我的建议是将其分解为步骤。管理层通常会比一次性大的成本更容易接受一系列小成本。在迁移到Symfony2之前,我将专注于清理代码并准备好PHP5。

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