在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功能有关吗?关于那个的任何信息?
非常感谢&最诚挚的问候!
答案 0 :(得分:10)
但是,我想在回答问题时增加更多的清晰度:
您是否计划跨多个应用程序共享此捆绑包? [无]:
Symfony Bundle生成器需要决定生成的bundle的使用情况。
如果yes
回答了这个问题:这意味着您生成的Bundle将与多个项目一起使用“按原样”,而不仅仅是针对您当前的项目,因此您需要使用前缀生成的捆绑包的“供应商”名称,并将前缀添加到生成的捆绑包的命名空间中。
如果不遵循惯例,将从控制台打印一条消息:
每个包都托管在命名空间下(如Acme / BlogBundle)。该 命名空间应以您的公司名称之类的“供应商”名称开头, 您的项目名称或您的客户名称,后跟一个或多个 可选的类别子命名空间,它应该以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
配置。
因此,如果您将其作为单独的捆绑包生成,则无需担心多个应用。