php - Symfony2 中的 bundle 应该代表什么

标签 php bundle symfony

这对你来说可能很明显,但是——即使在阅读了很多手册和博客之后——我仍然不确定 Symfony2 中的包在网页中究竟应该代表什么。从简单的演示应用程序中很难猜到。

例如:我有一个网站,它分为两部分(一个只是像 example.com 这样的二级域,另一个是 dom2.example.com )。这两个部分中的每一个都有自己的一些部分 - 有时相同(如新闻)有时不同。

在 symfony2 中正确的表示是什么?我应该有

  • 一个 MySite\site1MySite\site2 bundle 并通过不同的 Controller 执行不同的部分,或者
  • bundle Site1\NewsSite2\News,或
  • bundle 了 MySite\Site1NewsMySite\Site2News

...或者我在这方面完全错了吗?

最佳答案

我也是 Symfony 的新手,我会感兴趣地关注这个问题的结果,但对于它的值(value),我的看法是:

bundle 就是:一组文件、 Assets 、PHP 类和方法、测试等。分组的逻辑可以是您喜欢的任何内容。在某些情况下,分组是什么以及为什么要这样做是非常明显的——例如,如果我为 Symfony2 编写了一个博客系统并想发布它,我会把它打包成一个包。这是文档中使用最多的示例。

但是您也可以将 bundle 用于您想要作为一个小功能发布的任何内容。比如说,this bundle为所有 Controller 创建默认路由。它不像博客或论坛那样是一个完全开发的插件/功能,但它是一些我可以轻松导入到我的项目中的代码,它与其他所有东西完全分开,它是一个包。

最后,您还可以在项目内部以对您有意义的任何方式使用 bundle 。


我对你的具体情况的看法:

快速简单:

  • MySite\MyCode -- 完成工作,也许您没有任何合乎逻辑的方法来分解您要编写的代码。

如果这两个站点之间有一些更独特的功能,并且为了清楚起见,您希望将它们分开:

  • MySite\SharedFeatures
  • MySite\Site1Features
  • MySite\Site2Features

如果你真的喜欢一切就绪,或者如果你有一个复杂的项目,也许:

  • MySite\MySiteMain(不值得单独打包的共享功能和包罗万象的杂项)
  • MySite\News
  • MySite\Site1FeatureSomethingOrOther
  • MySite\Site2FeatureSomethingOrOther

我绝对认为你想坚持逻辑代码组——所以我认为你的例子“bundles Site1\News and Site2\News”和“MySite\Site1News and MySite\Site2News”不会这是最好的方式。 Site1 和 Site2 是实现,因此为每个站点的新闻页面制作一个单独的包对我来说似乎适得其反;您可能想要制作一个新闻组件并将其构建为以两种不同的方式使用。

至于你的双域问题,你可以将两个域指向相同的代码,并在你的代码中测试请求的域,或者你可以检查相同代码的两个副本并更改配置文件略微(这不一定违反 DRY 的想法,因为您仍然会在一个地方编辑代码,然后更新两个副本。)

关于php - Symfony2 中的 bundle 应该代表什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5770753/

相关文章:

php - 显示来自两个表的信息 php?

php - Mysql查询计数某些值

ios - XCode (4.6.3) 在复制资源阶段调用 TiffUtil

php - 无法在 Symfony2 应用程序中使用 Sahi/Mink/Behat 上传文件

php - Symfony2 学说 : How to select users that are not in groups with doctrine query builder

php - 角色管理 Symfony 和 NodeJs

ios - 设置不支持的语言时,CFBundleDevelopmentRegion不起作用

bundle - Unity - 不要加载相同的资源包两次

php - 具有数组值的 Doctrine DBAL setParameter()

php - 在 Symfony2 Doctrine findBy() 中保留数组的初始顺序