在 Symfony3
當執行 php bin/console generate:bundle
創建 bundle 時候,控制台會詢問是否會在未來把將要創建的 bundle 共享。
如果選擇 no
,則 bundle 建立後目錄如 src/UserBundle
,如果選擇 yes
,則需要增加 vendor name,建立後如 src/XX/UserBundle
然而在創建期間也許沒有共享計劃,那麼以後如果有共享的打算,則需要重新組織文件
和相應的配置文件。
那麼是否應該在 bundle 建立時始終包含 vendor name?
例如
src/XX/UserBundle 或 src/XX/Bundle/UserBundle
這樣帶來的副作用是,當你不準備共用目前 bundle 時,你在應用程式原始碼中多了一個
。或定義 service
和 route
時多了一個前綴,如xx_user.user_manager
這樣可以免去後顧之憂,不用擔心以後共享當前 bundle 時,需要更改目錄結構,namespace 以及 route 和 service 的命名空間問題。
有什麼看法嗎?
回覆內容:
當執行 php bin/console generate:bundle
創建 bundle 時候,控制台會詢問是否會在未來把將要創建的 bundle 共享。
如果選擇
,則 bundle 建立後目錄如 src/UserBundle
,如果選擇 yes
,則需要增加 vendor name,建立後如 src/XX/UserBundle
然而在創建期間也許沒有共享計劃,那麼以後如果有共享的打算,則需要重新組織文件 namespace
和相應的配置文件。
那麼是否應該在 bundle 建立時始終包含 vendor name?
例如
或
src/XX/Bundle/UserBundle
這樣帶來的副作用是,當你不準備共用目前 bundle 時,你在應用程式原始碼中多了一個 namespace
。或定義
和 route
時多了一個前綴,如xx_user.user_manager
這樣可以免去後顧之憂,不用擔心以後共享當前 bundle 時,需要更改目錄結構,namespace 以及 route 和 service 的命名空間問題。
有什麼看法嗎?
為什麼要 vendorName ?
VendorName 是為了避免相同Vendor 的相同bundleName 的衝突,簡單來說就是為了避免命名衝突,例如Foo 和Bar 兩個Vendor 都要創建一個UserBundle,那麼可果不加vendorName 就會產生衝突,這相不難理解吧?
什麼情況下應該包含 vendorName ?
如果你的 bundle 只在目前專案中使用,而不是作為共享的第三方 bundle(一般需要發佈成 composer package),那麼可以不需要 vendorName,反之則需要加上 venderName。