我也是 Symfony 的新手,并且会感兴趣地关注这个问题的结果,但对于它的价值,我的看法是:
包就是这样:一组文件、资产、PHP 类和方法、测试等。分组的逻辑可以是任何你喜欢的东西。在某些情况下,分组是什么以及为什么这样做是很明显的——例如,如果我为 Symfony2 编写了一个博客系统并想要发布它,我会将它打包成一个包。这是文档中使用最多的示例。
但是您也可以将捆绑包用于您想要作为一个小功能发布的任何内容。例如,这个包为你的所有控制器创建默认路由。它不是像博客或论坛那样完全开发的插件/功能,但它是一些我可以轻松导入到我的项目中的代码,它与其他所有东西完全分开,它是一个捆绑包。
最后,您还可以在项目内部以任何对您有意义的方式使用捆绑包。
我对你的具体情况的看法:
快捷方便:
MySite\MyCode
-- 完成工作,也许你没有任何合乎逻辑的方法来分解你要编写的代码。
如果两个站点之间有一些更独特的功能,并且为了清楚起见您想将它们分开:
MySite\SharedFeatures
MySite\Site1Features
MySite\Site2Features
如果你真的喜欢所有东西,或者你有一个复杂的项目,也许:
MySite\MySiteMain
(不值得拥有自己捆绑的共享功能和包罗万象的杂项)
MySite\News
MySite\Site1FeatureSomethingOrOther
MySite\Site2FeatureSomethingOrOther
我绝对认为您想坚持使用逻辑代码组- 所以我认为您的示例“捆绑 Site1\News 和 Site2\News”和“MySite\Site1News 和 MySite\Site2News”不是最好的方法。Site1 和 Site2 是实现,因此为每个站点的新闻页面制作单独的捆绑包对我来说似乎适得其反;您想要制作一个新闻组件并将其构建为以两种不同的方式使用。
至于您的双域问题,您可以将两个域指向相同的代码,并在您的代码中测试请求的域,或者您可以检查相同代码的两个副本并稍微更改配置文件(这不一定违反DRY的想法,因为您仍然需要在一个地方编辑代码,然后更新两个副本。)