我不确定如何提出这个问题。这有点模糊,但是如果你遇到了Corpus Delicti,你会明白我的意思。
当我第一次看到Symfony2如何将束映射到路径上时,几天前,我已经感到有点疑惑他们为什么选择映射Bundle名称
AxxBxxBundle
到.../Axx/BxxBundle/...
对我来说,这个决定似乎是随意和混乱,不要误解我这不是一个严重的障碍,你会在五分钟内习惯它,但我觉得它闻起来很有趣。
现在我在Book:
中看到了这句话BUNDLENAME:ControllerName:TEMPLATENAME
这是模板的逻辑名称,映射到a 使用以下惯例的物理位置。
/路径/到/ BUNDLENAME /资源/视图/ ControllerName / TEMPLATENAME
我认为这是错误的,必须在Bundle和Name之间进行削减。
但是这句话告诉我,即使在内部的Symfony2圈子里,有些人也不会发现这种直觉。
那么什么是“哲学”绑定这个束事物及其映射逻辑?
答案 0 :(得分:2)
This并未完全回答有关推理的问题,但它提供了有关Bundle
主题的更多信息。要获得为什么的答案,您或许应该联系编写Fabien Potencier类的Symfony\Component\HttpKernel\Kernel
,该类依赖于此约定。
答案 1 :(得分:2)
来自Zend Framework,对我来说并没有那么糟糕。所有这些课程都以Zend_ Thinking开头,因为所有者/创作者的名字使其更容易。在java中,大多数库以com.foobar
开头引用Fabien:“Symfony2依赖于众所周知的设计模式,以及来自Java世界的最佳实践。”
你的陈述没有意义,或者我错过了你的观点:
我认为这是错误的,必须在Bundle之间进行削减 和名字。
你的意思是:在Acme和DemoBundle之间?它确实感觉像是重复,但
引用Fabien:“捆绑包是一组结构化文件,可实现单一功能,并可与其他开发人员轻松共享。”
我可以使用Acme的博客包,然后我从Emca找到一个类似的包。他们的捆绑包很可能具有相同的型号和控制器和路径名称。同时使用它们:这样就不会使用另一个库覆盖任何内容。因此,创建者/所有者的第一个名称是防止重复。
由于使用起来很麻烦,我总是将我的我的 / DemoBundle称为快速使用:p或者你可以在控制台包生成过程中给它一个自定义名称(如果你不喜欢它) )
此外:
所有核心捆绑包的处理方式与捆绑包完全相同 一切都是捆绑。捆绑包易于携带和配置。 它们确实是Symfony2真正力量的关键。捆绑可以扩展 另一捆。它可以独立分发 应用
由于网络资产在捆绑中,我相信他们设法做到了。这将允许简单的配置和可重用性,例如,可以在不影响您的应用程序的情况下对symfony核心进行更大的(范围)改进。