2011-12-26 63 views
3

據我所知,Bundles將分離功能。假設我有一個UserBundle & a BlogBundle。然後我的BlogBundle:Post將有一個author字段,其​​中引用UserBundle:User。這不會破壞Bundles的目的嗎?我不能換另一個UserBundle?我怎樣才能以正確的方式做到這一點?或者這是最好的呢?在Symfony 2和Coupling中集成Bundle(相關原則2實體)

+0

我發現令人討厭的事情是:如果我向社區提供一個包,並且它有依賴關係,那麼下游開發人員必須對這些代碼進行安裝。我想要一個deps系統,我爲我的捆綁指定了deps,'bin/vendors install'負責它,而不需要下游開發者與第三方捆綁。這和缺乏內置管理生成器是我與s2競爭的主要觀點(作爲一名資深s1用戶) – yitznewton 2011-12-26 16:13:53

+3

@yitznewton,[作曲家](https://github.com/composer/composer)正在開發中以解決這個問題。 – 2011-12-26 16:18:55

+0

@elnur我們什麼時候會用完音樂項目名稱? TY :) – yitznewton 2011-12-26 17:17:47

回答

6

如果您對捆綁之間的依賴關係感到不舒服(我個人同意您的看法),您可以在任何捆綁之外創建模型。這可以像這樣配置...

doctrine_mongodb: 
    document_managers: 
     default: 
      mappings: 
       model: 
        type: annotation 
        dir: %kernel.root_dir%/../src/MyApp/Model 
        prefix: MyApp\Model\ 
        alias: Model 

ORM的配置看起來很相似。

+0

我從來沒有使用過這種方法,我很好奇你將如何引用一個倉庫,因爲你通常會寫'SomeBundle:SomeEntity'。前綴代替捆綁嗎?例如'MyApp:Model'(根據您的示例配置)? – 2011-12-26 19:18:06

+1

但是,假設我正在開發一個'UserBundle',我可以將它用於多個項目,我不需要單獨分發模型嗎?此外,它似乎是這樣,只是另一個捆綁,而不是「正式」一個 – 2011-12-27 02:44:36

+1

@Arms:您將使用配置的別名引用模型(即'型號:用戶') – 2011-12-27 23:27:12

3

捆綁是爲了儘可能地分開功能,但這並不意味着有些不會依賴於其他。

我認爲有趣的是,甚至一些Symfony2組件,它們應該是獨立的庫,都有依賴關係。例如,HttpKernel類取決於來自HttpFoundationEventDispatcher組件的類。

在您的示例中,如果您需要在另一個UserBundle中進行交換,則必須採取必要步驟以確保您的BlogBundle的依賴關係仍然滿足。這可能意味着你需要重構。

因此,捆綁的目的不會被打敗,因爲一個引用另一個。即使它們不總是100%解耦,捆綁仍然有利於使用。

0

那麼,在另一個應用程序的上下文中,人們可能不希望將給定的博客帖子綁定到個人/用戶,而不是羣組。爲了保持代碼的最大可移植性,我認爲你應該抽象一下這個場景。關係將是不可接受的。另一方面,所有者的身份是。

所以想象一個給定的博客文章有一個所有者。在上下文中,如果一個不同的應用程序有自己的捆綁包,所有者標識可能是一個組,一個用戶,一個外部來源等。

Imho您應該只使用編寫文章的「one」並不意味着這將成爲本地數據庫上的「人員」。