自Symfony 2.8生成捆绑包时,新选项询问了多个应用程序

时间:2015-12-16 14:03:01

标签: symfony

在Symfony 2.8之前,因为我需要在Symfony中使用multiApp系统,

我按照这两个帖子来实现这一目标:

- http://jolicode.com/blog/multiple-applications-with-symfony2

- http://mihai-stancu.ro/2015/10/03/multiple-apps-in-one-repo-with-symfony2/

SensioLabs并不支持它,但它运行良好,附带一个控制台选项(例如php app/console generate:bundle --app=app1)来选择你需要使用命令的应用程序。

从Symfony 2.8开始,我现在看到生成捆绑时会出现一个新问题:

  

欢迎使用Symfony捆绑生成器!
  您是否计划跨多个应用程序共享此捆绑包? [不]:

但我在网上找不到任何有关此功能的信息。 它与MultiApp功能有关吗?关于那个的任何信息?

非常感谢&最诚挚的问候!

2 个答案:

答案 0 :(得分:10)

<{3}}的回答非常好。

但是,我想在回答问题时增加更多的清晰度:

  

您是否计划跨多个应用程序共享此捆绑包?   [无]:

Symfony Bundle生成器需要决定生成的bundle的使用情况。

如果yes回答了这个问题:这意味着您生成的Bundle将与多个项目一起使用“按原样”,而不仅仅是针对您当前的项目,因此您需要使用前缀生成的捆绑包的“供应商”名称,并将前缀添加到生成的捆绑包的命名空间中。

如果不遵循惯例,将从控制台打印一条消息:

  

每个包都托管在命名空间下(如Acme / BlogBu​​ndle)。该   命名空间应以您的公司名称之类的“供应商”名称开头,   您的项目名称或您的客户名称,后跟一个或多个   可选的类别子命名空间,它应该以bundle结尾   名称本身(必须将Bundle作为后缀)。

     

有关捆绑包的详细信息,请参阅@michael-sivolobov   命名惯例。

     

使用/而不是\来命名空间分隔符以避免任何问题。

src/目录下生成的Bundle的文件结构将为:

├─ src/
│  └─ yourVendor/
│     └─ yourBundle/
│        └─ Controller/ 
│        └─ DependencyInjection/
│        └─ Resources/
│        └─ Tests/
│        └─ yourVendorYourBundle.php/

如果您使用No回答此问题:这意味着您打算仅将您生成的Bundle用于当前项目,因此您不需要“供应商”作为前缀,因为它永远不会被共享。

src/目录下生成的Bundle的文件结构将为:

├─ src/
│  └─ yourBundle/
│     └─ Controller/ 
│     └─ Resources/
│     └─ Tests/
│     └─ yourBundle.php/

以下是关于Best Practice for Bundle Name的一些好文档。

答案 1 :(得分:4)

如果您不知道如何回答,请使用默认值。

这个问题在这里是因为你可以创建用于共享的包,你必须用供应商名称命名(就像所有人在发布best practices之前所做的那样)。

但是你也可以创建仅供内部使用的bundle作为你的应用程序的主要包或一些有用的包。因此,您不需要捆绑名称中的供应商名称。在这个问题生成器上回答no将不会产生YourVendorName/AppBundle而只会产生AppBundle

如果在回答yes xml格式时,将以no格式生成回答annotation配置。

因此,如果您将其作为单独的捆绑包生成,则无需担心多个应用。