使用Flex创建了新的Symfony 3.4项目-这真的是Symfony 3.4吗?

时间:2018-12-12 07:38:30

标签: php symfony symfony-flex

问题:

使用Flex安装程序创建的Symfony 3.4项目真的是Symfony 3.4吗?还是一个带有3.4个核心文件的“ Symfony 4项目”?

完整故事:

我正在将现有的Symfony 2.8项目迁移到Symfony 3.4。最初,我使用Symfony安装程序创建了一个新的Symfony 3.4项目:

symfony new MyProject 3.4

文件和文件夹的结构与Symfony 2.8略有不同,但是总体而言,它们非常相似。从现有的2.8项目中迁移配置,文件等并不是太困难。

但是,经过更多研究,我认为最好使用推荐的Flex安装程序启动新的3.4项目。这将为我提供一个新的文件夹结构,该结构也将在Symfony 4中使用,这可能使将来向该版本的迁移更加容易。

composer create-project symfony/skeleton:3.4.* MyProject

当然,此项目中的目录结构不同。但是,不仅文件夹不同,而且几乎所有内容都不同。完整配置的组织方式,路由的定义和管理方式,捆绑的组织方式(根本没有),参数的定义和使用方式等。

几乎没有任何东西看起来像Symfony 3.4。这似乎是Symfony 4的设置,其中只有vendor/symfony/...中的文件来自版本3.4

将2.8项目迁移到此设置会更加复杂。

我当然知道Symfony 4发生了很多变化,而Symfony 3.4仍然与Symfony 2.8非常相似。 但是两个Symfony 3.4安装有多么如此大相径庭?

我知道Flex是一种用于管理项目的新工作流,但无论使用哪个工作流/安装来创建它,都不应该成为最终结果-一个新的Symfony 3.4项目-大致相同。

在设置和管理其他项目时,Flex功能更强大。但是我想一次设置该项目并运行几年。在不久的将来采用Flex方法是否有任何优势?

2 个答案:

答案 0 :(得分:2)

回答第一个问题:是的,使用Flex创建的Symfony 3.4项目确实是3.4项目。 “ bin / console --version”将对此进行验证。

就目录结构而言,Symfony试图在保持向后兼容性与保持向前发展以及完善其设计之间寻求平衡。有关为何执行此操作的信息,请密切关注Symfony博客并访问松弛的频道。尤其是介绍Flex时的帖子以及新的目录结构。

Symfony的一个目标是使从长期支持版本到更新版本的迁移尽可能容易。因此,2.8与3.0几乎相同,只是删除了许多折旧的功能。如果您当时在关注这些事情,您会发现2.7和2.8之间有很大的跳跃。

对于3.4到4.0一样简单,但是从3.0到3.4可能会有一些颠簸。

有点曲折。抱歉。

要解决有关使用Flex的价值的第二个问题,就像所有基于意见的问题一样,唯一正确的答案是:取决于。

就我而言,使用新目录结构的选择很容易。我有许多应用程序,并且每天使用Symfony。跟上最新和最伟大的事情对我来说很有意义。花时间将应用程序(其中一些可追溯到2.3)移植到4.0,使我的整体维护负担变得更加轻松。尝试如何移植的时间帮助我了解了新功能。一旦我适应了这一过程,实际上大部分时间只是在复制/粘贴/重命名练习。最难的是确保正确地更新了一些第三方的依赖关系。

在您的情况下,您似乎只有一个应用程序,并且只想更新它,然后忘记了几年。在这种情况下,请保留旧结构并继续前进。在某些时候,您可能需要使用新的结构,但是等待几年不会对您造成任何伤害。嘿,我怀疑5.0会带来更多变化。

由您选择。

答案 1 :(得分:0)

Symfony Flex是安装和管理Symfony应用程序的新方法。 Flex不是Symfony的新版本,而是替代并改进Symfony Installer和Symfony Standard Edition的工具。

Symfony Flex可以自动执行Symfony应用程序中最常见的任务,例如安装和删除捆绑软件以及其他Composer依赖项。 Symfony Flex适用于Symfony 3.3及更高版本。从Symfony 4.0开始,默认情况下应使用Flex,但它仍然是可选的。

来源:https://symfony.com/doc/3.4/setup/flex.html