从Symfony 1.4升级到Symfony 4

时间:2019-03-25 08:26:32

标签: symfony

我们有一个Symfony 1.4应用程序,并且想要升级到Symfony4。是否可以,或者我们是否需要对该应用程序进行重新编程?

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

6 个答案:

答案 0 :(得分:2)

Symfony 1是一个完全不同的代码库,在框架(或应用程序)内部以及某些库中使用不同的概念。例如,它使用Propel(活动记录方法)而不是Doctrine(数据映射器方法)将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版本的限制。周围还有其他方法,但这将意味着更多的工作。

答案 1 :(得分:1)

Symfony Framework开发人员在这里:

Symfony确实提供了版本之间的升级步骤。例如: https://github.com/symfony/symfony/blob/2.1/UPGRADE-2.1.md

但是从1.4升级到4是很大的,将需要大量的工作。 我同意:根据我的经验,从头开始编写整个应用程序会更快。 升级可能需要几年时间才能获得稳定的结果(具体取决于您的应用程序大小)

答案 2 :(得分:0)

在这里看看: https://symfony.com/doc/current/setup/upgrade_major.html

Symfony 1和4之间的区别可能很重要,因此您可以考虑启动一个新项目,并使用一些先前的代码来构建一个更好,更干净的项目。

答案 3 :(得分:0)

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

  

即使您可以升级到版本2,然后再升级到版本3,直到这里   可能很好,但是版本4完全不同,所以我可以   建议您直接重写代码,而不要浪费时间   从升级到更高版本。

答案 4 :(得分:0)

免责声明:我编写并维护了一个开源工具,该工具可以处理称为Rector的自动即时迁移。

自2018年以来,借助抽象语法树(AST),这些迁移变得更加容易。该技术允许以readfile / printfile的速度更改无限数量的文件中的一种模式。

例如从Symfony 1到Symfony 5的1000个控制器将花费与1个控制器类似的时间。您所需要做的就是编写迁移规则。其中一些已经在Rector做好了准备,例如通过Symfony 5-see Rector sets on Github的Symfony 2.8。


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

答案 5 :(得分: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%的目标。