PHP8.1.21版本已发布
vue8.1.21版本已发布
jquery8.1.21版本已发布

bundle name是否该永远包含 vendor name?

原创
2016-08-18 09:15:35 1295浏览

symfony3 当执行 php bin/console generate:bundle 创建 bundle 时候,控制台会询问是否会在未来把将要创建的 bundle 共享。

如果选择 no,则 bundle 创建后目录如 src/UserBundle ,如果选择 yes ,则需要增加 vendor name,创建后如 src/XX/UserBundle

然而在创建期间也许没有共享计划,那么以后如果有共享的打算,则需要重新组织文件 namespace 和相应的配置文件。

那么是否应该在 bundle 创建时始终包含 vendor name?

比如 src/XX/UserBundle 或者 src/XX/Bundle/UserBundle

这样带来的副作用是,当你不准备共享当前 bundle 时,你在应用程序源代码中多了一个 namespace。或者定义 serviceroute 时多了一个前缀,如xx_user.user_manager

这样可以免去后顾之忧,不用担心以后共享当前 bundle 时,需要更改目录结构,namespace 以及 route 和 service 的命名空间问题。

有什么看法吗?

回复内容:

symfony3 当执行 php bin/console generate:bundle 创建 bundle 时候,控制台会询问是否会在未来把将要创建的 bundle 共享。

如果选择 no,则 bundle 创建后目录如 src/UserBundle ,如果选择 yes ,则需要增加 vendor name,创建后如 src/XX/UserBundle

然而在创建期间也许没有共享计划,那么以后如果有共享的打算,则需要重新组织文件 namespace 和相应的配置文件。

那么是否应该在 bundle 创建时始终包含 vendor name?

比如 src/XX/UserBundle 或者 src/XX/Bundle/UserBundle

这样带来的副作用是,当你不准备共享当前 bundle 时,你在应用程序源代码中多了一个 namespace。或者定义 serviceroute 时多了一个前缀,如xx_user.user_manager

这样可以免去后顾之忧,不用担心以后共享当前 bundle 时,需要更改目录结构,namespace 以及 route 和 service 的命名空间问题。

有什么看法吗?

为什么要 vendorName ?

VendorName 是为了避免不同 Vendor 的相同 bundleName 的冲突,简单来说就是为了避免命名冲突,比如 Foo 和 Bar 两个 Vendor 都要创建一个 UserBundle,那么可果不加 vendorName 就会产生冲突,这相不难理解吧?

什么情况下应该包含 vendorName ?

如果你的 bundle 只在当前项目中使用,而不是作为共享的第三方 bundle(一般需要发布成 composer package),那么可以不需要 vendorName,反之则需要加上 venderName。

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。