我面临着为遗留的PHP Web“应用程序”重构和添加新功能的挑战,它包含大约788个php脚本,它们没有文件夹结构,它们大部分是包含JavaScript,PHP,HTML的脚本和CSS代码在同一个文件中,脚本持久化并使用来自3种不同数据库类型的数据,MSSQL,MYSQL和DB2,认证是基于会话的,大多数是基本的php,还有一些页面使用纯HTML和ajax要与php脚本进行通信,不用说没有类定义,大多数情况下甚至没有函数。
我的目标是将其转换为更易于维护的应用程序,最有可能使用我熟悉的symfony组件,引入HTTP请求抽象,路由以及可能的MVC,还将代码重构为可用类并使用composer实现自动加载以利用第三方图书馆。
坦率地说,我脑海中唯一的选择就是抛弃所有这一切并启动一个新项目。
即使重写所有内容似乎都是最好的主意,但有时候它并不是最好的商业选择,对于庞大的代码库来说可能相当困难。
一种解决方案可能是引入Symfony项目并按模块开始重构,但您将主要面临以下问题:
我认为将您的遗留应用程序包装在symfony控制器中可能是一个很好的解决方案。
https://www.youtube.com/watch?v=WbBf4p4FcqA&t=348s
https://stovepipe.systems/post/migrating-your-project-to-symfony
那么你
我是Rector的作者,这个工具可以在几秒钟内迁移大量的PHP文件。例如。将PHP 5.3升级到PHP 7.4,将Symfony 2.8升级到4.2或从Nette迁移到Symfony(read the case study)。
Spaghetti到MVC集是未来的功能之一(已经很少有项目感兴趣)。但是开箱即用支持上面提到的功能,但您也可以添加自己的规则来迁移特定代码。