在 Laravel 中,使用 App::make('') 而不是构造函数注入有什么缺点吗?

dwe*_*aus 6 php inversion-of-control laravel

通常我只会通过构造函数注入依赖项,但是当父类具有依赖项并且必须通过所有子类传递它们时,它会变得非常冗长。

另一种方法是$this->dependancy = App::make('Dependancy')单独在父类中使用。那么父和子构造函数都可以为空。这样做有什么缺点吗?

Chr*_*geb 5

你的方法有一个缺点,按照你的建议去做会让你的应用程序更难测试。

我的意思是,如果您尝试为父类编写单元测试,您将不再单独测试该父类。您的测试现在还取决于父类中声明的依赖项的结果。

如果您通过构造函数注入(或任何类型的注入)传递此依赖项,您就可以控制依赖项,并且可以模拟/存根它的输出并更好地隔离测试您的父类。