Symfony 2 bundle名称,使用类的短名称

  • 本文关键字:bundle 名称 Symfony symfony
  • 更新时间 :
  • 英文 :


Symfony 2网页中给出的例子

Namespace                       Bundle Class Name
AcmeBundleBlogBundle          AcmeBlogBundle
AcmeBundleSocialBlogBundle   AcmeSocialBlogBundle
AcmeBlogBundle                 AcmeBlogBundle

我的供应商名称有 9 个字符大,但如果它已经驻留在目录中,我发现MyVendorNameForumBundle.php MyVendorName/ForumBundle和类名是多余的MyVendorName/ForumBundle

如果我只是命名我的主要班级ForumBundle假设我想分享,它会给我带来未来的问题吗?显然,命名空间仍然MyVendorName/ForumBundle

该类实际上是在某处使用还是只是某处的一次性配置?

我主要担心的是我不想每次需要访问它时使用大名称(例如MyVendorName/MyVendorNameForumBundle::someMethod())。

也许这并不完全正确,我是Symfony 2的新手。

谢谢

首先,我不会想象命名空间AcmeBundleBlogBundle来自AcmeBlogBundle。更合适的东西是AcmeBlogBundle,这将使AcmeBlogBundle。如果你AcmeBundleBlogBundle,类名实际上可能最终会AcmeBundleBlogBundle

供应商名称包含在类中以防止冲突。如果其他人决定将他们的捆绑类命名为BlogBundle怎么办?

我也无法想象你曾经调用一个直接属于 Symfony2 捆绑包根类的方法。

一般来说,Symfony2会为你提供快捷方式,让你找到你需要的最常见的东西。例如,当您在routing.yml中引用控制器时:

AcmeSocialBlogBundle:Default:show

它实际上将解析为

AcmeSocialBlogBundleControllersDefaultController::showAction

我的建议?放松。Symfony2开发团队已经用快捷方式符号解决了这个问题。遵循 php app/console generate:bundle 命令生成的约定作为起点,其他一切都将到位。下面是一些有效的命名空间:

AcmePluginsBlogBundle
AcmeBlogBundle
AcmeClientNameBlogBundle
sjagrMyAwesomeBundle <-- See how I made my Github username a vendor name?

我的警告是,当你试图违背框架的建议时,你以后会后悔地重新审视这个决定。我已经这样做了,我目前正在重写Symfony2应用程序,我希望我一开始就花时间做对了。

最新更新