【问题标题】:Mapping of bundle names onto respective directory path in Symfony2将包名称映射到 Symfony2 中的相应目录路径
【发布时间】:2011-07-25 09:22:23
【问题描述】:

我不确定如何提出这个问题。有点模糊,但如果你遇到了熟食店,你就会明白我的意思。

几天前,当我第一次看到 Symfony2 如何将 bundle 映射到路径时,我已经对他们为什么选择映射 Bundle 名称感到有点困惑

AxxBxxBundle 转至.../Axx/BxxBundle/...

对我来说,这个决定似乎是武断和令人困惑的,不要误会我的意思,这不是一个严重的障碍,你会在五分钟内习惯它,但我仍然觉得它闻起来很有趣。

现在我刚刚在Book 中看到了这句话:

BundleName:ControllerName:TemplateName

这是模板的逻辑名称,映射到一个 使用以下约定的物理位置。

/path/to/BundleName/Resources/views/ControllerName/TemplateName

我认为这是错误的,Bundle 和 Name 之间必须有斜线。

但是这句话告诉我,即使在 Symfony2 的内部圈子中,有些人也没有那么直观。

那么绑定这个bundle的东西及其映射逻辑的“哲学”是什么?

【问题讨论】:

    标签: symfony


    【解决方案1】:

    This 并未准确回答有关推理的问题,但它提供了有关Bundle 主题的更多信息。要获得为什么的答案,您或许应该联系Fabien Potencier,他编写了依赖此约定的Symfony\Component\HttpKernel\Kernel 类。

    【讨论】:

    • 我会联系他的;你有他的电话号码吗? :D
    • 我不会把它贴在这里 - 如果我有它;-)
    • 你对士气和责任的忠诚让我的心都快融化了!
    【解决方案2】:

    来自 Zend Framework,这对我来说并没有那么糟糕。所有这些类都以 Zend_ 开头,将其视为所有者/创建者的名称使其更容易。在 java 中,大多数库都以 com.foobar 开头

    引用 Fabien:“Symfony2 依赖于众所周知的设计模式和来自 Java 世界的最佳实践。”

    您的陈述没有真正的意义,或者我没有理解您的意思:

    我认为这是错误的,Bundle之间必须有斜线 和姓名。

    您的意思是:Acme 和 DemoBundle 之间?确实感觉像是重复,但是

    引用 Fabien:“捆绑包是一组结构化的文件,它实现了一个单一的功能,并且可以轻松地与其他开发人员共享。”

    我可以使用 Acme 的博客包,然后我从 Emca 找到了一个类似的包。他们的捆绑包很可能具有相同的模型&控制器&路由名称。两者都使用:这种方式不会被另一个库覆盖。所以创建者/所有者的名字是为了防止重复。

    由于使用起来很痛苦,我总是将我的称为 My/DemoBundle 以便更快地使用:p 或者您可以在控制台捆绑包生成期间给它一个自定义名称(如果您不喜欢它)

    还有:

    所有核心捆绑包的处理方式与您的捆绑包完全相同,并且 一切都是捆绑。捆绑包易于移植和配置。 它们确实是 Symfony2 真正强大的关键。捆绑包可以扩展 另一个捆绑。它可以独立于它的分发 应用。

    由于网络资产包含在捆绑包中,我相信他们设法做到了。这将允许简单的配置和可重用性,例如可以在不影响您的应用程序的情况下对 symfony 核心进行更大(范围)的改进。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多