2013-02-18 70 views
0

剛學習ZF2,我有點困惑。我對ServiceManager有一個大體的瞭解,並且瞭解如何添加服務,以及如何使用ServiceManagerAwareInterface將服務拉入課堂。但是在我的搜索中,我遇到了ServiceLocatorAwareInterface。Zend Framework 2 - ServiceManagerAwareInterface和ServiceLocatorAwareInterface之間的區別

有人能告訴我兩者之間的區別,以及我會使用哪種情況?

+1

下面的答案是好的,ServiceManager是ServiceLocator的特定實現,您應該使用ServiceLocator相關的障礙 – Andrew 2013-02-18 08:37:33

回答

4

ServiceManagerAwareInterface被引入來覆蓋MVC組件的特定需求,這需要服務定位器的具體實現。 iirc解除了此限制並且ServiceManagerAwareInterface被非正式考慮棄用。

至於你,你不想依賴具體的實現,而不是依靠契約或接口。因此,您應該更喜歡ServiceLocatorAwareInterface

+0

這是否意味着Skeleton Application將不再包含ServiceManager實例?然後在module.config.php中,我會配置「service_locator」而不是「service_manager」? – 2013-02-18 08:58:30

+0

@Aaron Murray如果不是非常需要,請避免使用'ServiceManagerAwareInterface'。如果你需要注入一個'ServiceManager'(特別是),那麼你的架構可能有一個缺陷。 – Ocramius 2013-02-18 08:59:29

+0

@AaronMurray不,配置仍然適用於「service_manager」。不要擔心, – Ocramius 2013-02-18 09:00:06