在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功能有关吗?关于那个的任何信息?
非常感谢和最诚挚的问候!
@ michael-sivolobov的回答非常好.
但是,我想在回答问题时增加更多的清晰度:
您是否计划跨多个应用程序共享此捆绑包?[没有]:
Symfony Bundle生成器需要决定生成的bundle的使用情况.
如果回答这个问题yes
:这意味着您生成的Bundle将" 按原样 "用于多个项目,而不仅仅是针对您当前的项目,因此您需要为生成的包添加前缀" 供应商 "名称,并添加前缀到生成的包的命名空间.
如果不遵循约定,将从控制台打印一条消息,其中显示:
每个包都托管在命名空间下(如Acme/BlogBundle).命名空间应该以"供应商"名称开头,例如您的公司名称,项目名称或客户端名称,后跟一个或多个可选类别子命名空间,它应以包名称本身结束(必须将Bundle作为后缀).
有关包命名约定的更多详细信息,请参阅包名称的最佳实践.
使用/而不是\来命名空间分隔符以避免任何问题.
src/
dirctory 下生成的Bundle的文件结构为:
?? src/ ? ?? yourVendor/ ? ?? yourBundle/ ? ?? Controller/ ? ?? DependencyInjection/ ? ?? Resources/ ? ?? Tests/ ? ?? yourVendorYourBundle.php/
如果您回答这个问题No
:这意味着您打算仅将您生成的Bundle用于当前项目,因此您不需要" 供应商 "名称作为前缀,因为它永远不会被共享.
src/
dirctory 下生成的Bundle的文件结构为:
?? src/ ? ?? yourBundle/ ? ?? Controller/ ? ?? Resources/ ? ?? Tests/ ? ?? yourBundle.php/
以下是有关创建项目的最佳实践的一些很好的文档.