在laravel 5中的存储库中使用构造函数注入有什么好处?

时间:2015-11-01 06:10:11

标签: php laravel dependency-injection laravel-5 repository-pattern

我正在构建一个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种方法中使用外观,这种性能的改进是什么?

感谢帮助

1 个答案:

答案 0 :(得分:1)

这不仅仅是表现问题(顺便说一下:这两个案例的表现差异可以忽略不计)。

由于您的Unit模型几乎可以在存储库的任何方法中访问,因此使用构造函数注入是一种明确的方式来显示存储库与Unit类的直接相关性

此外,如果您在构造函数中注入依赖项,并且将来您将更改Unit类,您所要做的就是更改构造函数的参数。相反,使用外墙,您必须在所有方法中更改所有外墙调用