从Symfony 1.4升级到Symfony 4

3

我们有一个Symfony 1.4应用程序,希望升级到Symfony 4。这是可能的吗?还是必须重新编写应用程序?

我们询问了附近的一家软件公司,他们告诉我们必须重新编写应用程序。

6个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
3
Symfony 1是完全不同的代码库,使用不同的概念,无论是在框架(或应用程序)内部还是一些库中。例如,它使用Propel(Active Record方法)而不是Doctrine(Data Mapper方法)将php对象映射到数据库中。Symfony 2到4之间的差异要小得多,因为它们共享相同的基础代码库,因此彼此更接近。由于弃用(更改和删除代码的部分),升级仍可能需要大量工作,但总体上可以在同一应用程序内完成升级过程。除此之外,您可以选择最新版本,我认为,如果您现在/即将开始,甚至Symfony 5 beta也是一个不错的选择。 基本上,如果你想升级Symfony 1,你需要迁移到一个新系统,移动到Zend Framework 3/Laminas或Symfony 4并没有太大区别。至少你可以直接从Symfony 1升级到4,而不是逐步升级超过版本2/3。尽管如此,它将需要大量的手动工作。本质上,你正在迁移不同的应用程序。Symfony文档提供了一些关于如何启动这样的迁移项目的通用建议:https://symfony.com/doc/current/migration。 基本上,方法是在旧应用程序周围包装一个新应用程序(常称为窒息应用程序),然后将功能移动到新应用程序中,例如路由,当新功能尚不存在时回退到旧应用程序。选择较旧版本的Symfony(例如3.4)的主要原因可能是对使用的共享PHP版本的限制。还有其他解决方法,但这意味着需要更多的工作。

2
我是一名熟悉Symfony框架的开发者: Symfony 提供了版本之间的升级步骤,例如: https://github.com/symfony/symfony/blob/2.1/UPGRADE-2.1.md 但是从 1.4 升级到 4 是一个大工程,需要大量的工作。根据我的经验,重新编写整个应用程序会更快。 升级可能需要几年才能获得稳定的结果(当然这取决于您的应用程序规模)。

0

免责声明:我编写并维护一个名为 Rector 的开源工具,用于处理自动化即时迁移。

自2018年以来,借助抽象语法树(AST),这些迁移变得更加容易。这项技术可以在读取文件/打印文件的速度下更改无限数量的文件中的一个模式。

例如,从Symfony 1到Symfony 5的1000个控制器所需的时间与1个控制器相似。您只需要编写迁移规则。其中一些已经在Rector中准备好了,例如Symfony 2.8通过Symfony 5 - 请参见Github上的Rector集


您可以了解有关旧Symfony应用程序迁移的更多信息


0

0

从1.4升级到4是一个奇迹。

即使您可以升级到版本2,然后再升级到版本3,直到这里都很好,但版本4完全不同,因此我建议您直接重写代码,而不是浪费时间从一个版本升级到另一个版本。


我同意这个观点,但是我不同意其中的一些细节。从1升级到2/3/4并不重要,最大的变化是Symfony 1有完全不同的架构,这才是主要问题。如果你将一个Symfony 1应用程序升级到版本2,那么从那里升级到Symfony 4(或者很快的5)将会非常简单。 - dbrumann

0

对于仍然对此任务感兴趣的人,将Symfony 1.x应用程序迁移到现代的Symfony 4.x及以上版本(包括Symfony 5.x),我们公司也面临着完全相同的任务。我发现了这个GitHub项目,它详细介绍了如何使用Strangler Fig设计模式和Symfony在其网站上建议的Legacy Route Loader方法来完成此任务:

https://github.com/dkusmierek/symfony_migration_example

我可以保证这个方法是可行的,虽然你需要进行一些微调以使其适用于你特定的环境。但它应该足以让你完成90%的工作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,