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

问题描述 投票:0回答:3

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

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

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

php symfony web-applications legacy-code
3个回答
0
投票

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

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

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

0
投票

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

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

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

那么你

  • 保持应用遗留代码的有效性
  • 你可以编写功能测试
  • 实现新功能或将一些遗留代码移植到symfony中

-1
投票

In 2019+ you can use Instant Refactoring

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

Spaghetti到MVC集是未来的功能之一(已经很少有项目感兴趣)。但是开箱即用支持上面提到的功能,但您也可以添加自己的规则来迁移特定代码。

Read more on Github repository

© www.soinside.com 2019 - 2024. All rights reserved.