1

我建立一個laravel 5應用程序,我有一個倉庫象下面這樣:在laravel 5的倉庫中使用構造函數注入有什麼好處?

use App\Unit 

class UnitRepository implements IUnitRepository 
{ 
    public function get_all_units() 
    { 
     return Unit::all(); 
    } 

    // More methods below 
} 

在庫約6的方法,我做這樣的事情 單位::的someMethod。現在我想知道我是否應該使用構造 注入像這樣

class UnitRepository implements IUnitRepository 
{ 
    public function __construct(Unit $unit){ 
     $this->unit = $unit 
    } 

    public function get_all_units() 
    { 
     return $this->unit->all(); 
    } 

    // More methods below 
} 

那麼這將是在我的情況下使用構造器注入的優勢。考慮到我在6種方法中使用了門面,他們是否有一些 性能改進?

欣賞幫助

+0

這取決於。 User可能存在多個實現嗎?如果這樣做,DI可能是有益的。 –

回答

1

這不只是一個性能物質(順便說一句:在這兩種情況的性能是可以忽略的方面的差異)。

當你的Unit模型將會在倉庫的幾乎任何方法來訪問,使用構造函數注入一個清晰的方式來存儲庫的明確的直接依賴於Unit

此外,如果你注入依賴於你的構造函數,將來你會改變Unit類,你所要做的就是改變構造函數的參數。相反,使用外牆,您必須更改所有方法中的所有外牆呼叫