2014-09-30 24 views
0

疙瘩幫助跨應用程序重用相同的對象,並管理依賴性。疙瘩依賴注入靜態或對象

但如何管理疙瘩本身?

我應該創建一個全局對象嗎?或者讓它成爲靜態類?或者使用一個函數?

我想對青春痘的方法可以從任何地方,控制器,模型,插件等..

謝謝!

+1

如果您想在任何地方使用疙瘩方法,請在服務定位器antipatern – jlvaquero 2014-09-30 05:56:54

+0

感謝您的回覆。你是什​​麼意思?我在一個地方向Pimple添加新對象,然後在其他地方重新使用該對象。示例我需要訪問模型中的數據庫對象,但也需要訪問庫或插件鉤子。所以我需要訪問Pimple。你能多解釋一下嗎?謝謝!! – user2011250 2014-09-30 06:08:34

+0

@jlvaquero你能告訴我替代嗎? – user2011250 2014-09-30 06:20:47

回答

0

許多人認爲ServiceLocator是一種反模式,但是如果你謹慎使用它,那麼就沒有什麼傷害了。

<?php 

namespace Acme; 

class ServiceLocator 
{ 
    static protected $container; 

    public static function setContainer(\Pimple $container) 
    { 
     static::$container = $container; 
    } 

    public static function get($id) 
    { 
     return static::$container[$id]; 
    } 
} 
+0

我的意思是說,SL的濫用是反模式。濫用DI容器到處都是。 DI應該在頂層建立你的依賴鏈。然後,使用該層並關於DI或SL進行搜索。 – jlvaquero 2014-09-30 06:30:26

+0

你說過:「然後,使用圖層,並尋找DI或SL。」我的回覆:「你的意思是什麼」層「?你能提供一個例子說明如何設置數據庫對象並重新使用他的洞應用程序?謝謝!!」 – user2011250 2014-09-30 06:33:01

+0

@jlvaquero你能告訴我更多嗎?謝謝!! – user2011250 2014-09-30 17:28:16