Symfony 2 包名称,使用 class 的简称
Symfony 2 bundle name, using short name for class
Symfony 2 网页中给出的示例
Namespace Bundle Class Name
Acme\Bundle\BlogBundle AcmeBlogBundle
Acme\Bundle\Social\BlogBundle AcmeSocialBlogBundle
Acme\BlogBundle AcmeBlogBundle
我的供应商名称有 9 个字符大,但我发现如果 MyVendorName/ForumBundle
和 class 名称 MyVendorNameForumBundle.php
已经存在于 MyVendorName/ForumBundle
目录中,那么它是多余的。
如果我只是命名我的主要 class ForumBundle
假设我想分享,它会给我带来未来的问题吗?显然,命名空间还是MyVendorName/ForumBundle
.
class 是在某处实际使用还是只是某处的一次性配置?
我主要担心的是我不想在每次需要访问时都使用大名称(例如 MyVendorName/MyVendorNameForumBundle::someMethod()
)。
也许这不完全正确,我是 Symfony 2 的新手。
谢谢
首先,我无法想象命名空间 Acme\Bundle\BlogBundle
来自 AcmeBlogBundle
。更合适的是 Acme\BlogBundle
,这将是 AcmeBlogBundle
。如果您这样做 Acme\Bundle\BlogBundle
,class 名称实际上可能会变成 AcmeBundleBlogBundle
。
供应商名称包含在 class 中以防止冲突。如果其他人决定将他们的包命名为 class BlogBundle
怎么办?
我也无法想象你曾经调用过直接属于 Symfony2 包的根 class 的方法。
通常,Symfony2 会为您提供快捷方式,以获取您需要的最常见的东西。例如,当您在 routing.yml
:
中引用控制器时
AcmeSocialBlogBundle:Default:show
它实际上会解析为
Acme\SocialBlogBundle\Controllers\DefaultController::showAction
我的建议? 放松。 Symfony2 开发团队已经使用快捷符号解决了这个问题。遵循由 php app/console generate:bundle
命令生成的约定作为起点,其他一切都会到位。以下是一些有效的命名空间:
Acme\Plugins\BlogBundle
Acme\BlogBundle
Acme\ClientName\BlogBundle
sjagr\MyAwesomeBundle <-- See how I made my Github username a vendor name?
我的警告是,当您尝试违背框架建议的原则时,您稍后会后悔地重新考虑该决定。我已经这样做了,我目前正在重写 Symfony2 应用程序,我希望我一开始就花时间做对了。
Symfony 2 网页中给出的示例
Namespace Bundle Class Name
Acme\Bundle\BlogBundle AcmeBlogBundle
Acme\Bundle\Social\BlogBundle AcmeSocialBlogBundle
Acme\BlogBundle AcmeBlogBundle
我的供应商名称有 9 个字符大,但我发现如果 MyVendorName/ForumBundle
和 class 名称 MyVendorNameForumBundle.php
已经存在于 MyVendorName/ForumBundle
目录中,那么它是多余的。
如果我只是命名我的主要 class ForumBundle
假设我想分享,它会给我带来未来的问题吗?显然,命名空间还是MyVendorName/ForumBundle
.
class 是在某处实际使用还是只是某处的一次性配置?
我主要担心的是我不想在每次需要访问时都使用大名称(例如 MyVendorName/MyVendorNameForumBundle::someMethod()
)。
也许这不完全正确,我是 Symfony 2 的新手。
谢谢
首先,我无法想象命名空间 Acme\Bundle\BlogBundle
来自 AcmeBlogBundle
。更合适的是 Acme\BlogBundle
,这将是 AcmeBlogBundle
。如果您这样做 Acme\Bundle\BlogBundle
,class 名称实际上可能会变成 AcmeBundleBlogBundle
。
供应商名称包含在 class 中以防止冲突。如果其他人决定将他们的包命名为 class BlogBundle
怎么办?
我也无法想象你曾经调用过直接属于 Symfony2 包的根 class 的方法。
通常,Symfony2 会为您提供快捷方式,以获取您需要的最常见的东西。例如,当您在 routing.yml
:
AcmeSocialBlogBundle:Default:show
它实际上会解析为
Acme\SocialBlogBundle\Controllers\DefaultController::showAction
我的建议? 放松。 Symfony2 开发团队已经使用快捷符号解决了这个问题。遵循由 php app/console generate:bundle
命令生成的约定作为起点,其他一切都会到位。以下是一些有效的命名空间:
Acme\Plugins\BlogBundle
Acme\BlogBundle
Acme\ClientName\BlogBundle
sjagr\MyAwesomeBundle <-- See how I made my Github username a vendor name?
我的警告是,当您尝试违背框架建议的原则时,您稍后会后悔地重新考虑该决定。我已经这样做了,我目前正在重写 Symfony2 应用程序,我希望我一开始就花时间做对了。