2015-07-13 75 views
4

如果我鍵入提示所需的類/接口,Laravel 5會提供自動依賴關係解析。但他們應該如何實例化?例如:實例化Laravel 5中的依賴關係,好的方法

public function __construct(Dependency $dependency) { 
    $this->dependency = $dependency; 
} 

,然後在另一種方法,我想創建兩個實例,就像這樣:

$one = new Dependency(1); 
$two = new Dependency(2); 

什麼是最靈活和測試友好的方式來做到這一點?

回答

1

請原諒我可憐的笑話,但這要看情況。

看起來你錯誤地理解了依賴解決方法。 在你的例子中,屬性'依賴'已經包含一個實例化對象。如果在另一種方法中需要兩個不同的實例,則可以在那裏實例化它們,注入容器或使用工廠。這取決於你的需求。

非常短的介紹laravel依賴性解決

自動依存性laravel解決由service container提供,它是用於遞送(媒體鏈接)實例化的對象。解析的對象必須綁定到服務容器。最好的辦法是通過service providers。在服務提供商的註冊方法,你可以做你的綁定

$this->app->bind('Dependency', function ($app) { 
    return new Dependency(); 
}); 

在這個例子中,容器將在每次調用時返回一個新的實例。

如果你每次都需要相同的情況下,你可以綁定一個單身

$this->app->singleton('Dependency', function ($app) { 
    return new Dependency(); 
}); 
+0

OK我知道,但你如何通過PARAMS的構造?我沒有實例化'new Dependency',而是'new Dependency(1)'和'new Dependency(2)'。 –

+0

然後我需要一個更具體的例子來理解你的問題。你可以在綁定中實例化之前傳遞一個參數(例如'return new Dependency(1);'你也可以訪問IOC(通過'$ app')或者設置(例如''return new Dependency(config ('something'))'') – user3333137

+0

假設我需要一個使用某些數據實例化的模型類,並且該數據在使用該依賴關係的類中可用,好的示例是控制器和模型,其中I需要讓我們說一個用戶,雄辯的模型有'newInstance()'方法,但它不是其他類的標準。 –

相關問題