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类,你所要做的就是改变构造函数的参数。相反,使用外墙,您必须更改所有方法中的所有外墙呼叫