什么是现代化或重构遗留PHP应用程序的最佳方法

时间:2016-11-16 03:05:58

标签: php symfony web-applications legacy-code

我面临着重构和添加新功能到旧版PHP网络"应用程序"的挑战,它包含大约788个php脚本,没有文件夹结构,它们位于大多数部分脚本在同一个文件中包含JavaScript,PHP,HTML和CSS代码,脚本持久存在并使用来自3种不同数据库类型(MSSQL,MYSQL和DB2)的数据,其中认证是基于会话的,其中大部分都是基于会话的。基本的PHP,还有一些使用纯html和ajax与php脚本进行通信的页面,不用说没有类定义,大多数情况下甚至没有函数。

我的目标是将其转换为更易于维护的应用程序,最有可能使用我熟悉的symfony组件,引入HTTP请求抽象,路由以及可能的MVC,还将代码重构为可用类并实现自动加载使用composer来利用第三方库。

坦率地说,我心中唯一的选择就是抛弃所有这一切并启动一个新项目。

3 个答案:

答案 0 :(得分:0)

即使重写所有内容似乎都是最好的主意,但有时它并不是最好的商业选择,对于庞大的代码库来说可能会非常困难。

一个解决方案可能是引入Symfony项目并按模块开始重构,但您将主要面临以下问题:

  • Web服务器安装:如何在遗留应用程序旁边启动symfony应用程序(例如,使用自定义nginx位置)
  • 在两个应用程序之间共享会话,但symfony已经有bridge a legacy Application with Symfony Sessions
  • 拥有一致的网页设计,这是很多工作,但技术上不是很难
  • 我想其他许多问题

答案 1 :(得分:0)

我认为将您的遗留应用程序包装在symfony控制器中可能是一个很好的解决方案。

https://www.youtube.com/watch?v=WbBf4p4FcqA&t=348s

https://stovepipe.systems/post/migrating-your-project-to-symfony

所以你

  • 保持应用程序遗留代码正常工作
  • 你可以写功能测试
  • 实现新功能或将部分遗留代码移植到symfony

答案 2 :(得分:-1)

在2019年以上,您可以使用即时重构

我是Rector的作者,该工具可以在几秒钟内迁移大量PHP文件。例如。将PHP 5.3升级到PHP 7.4,将Symfony 2.8升级到4.2或从Nette迁移到Symfony(read the case study)。

从意大利面到MVC的设置是未来的功能之一(已经很少有项目感兴趣)。但是开箱即用地支持上述功能,但是您还可以添加自己的规则,以迁移您的特定代码。

Read more on Github repository