Laravel 4 上的依赖注入

Dependency Injection on Laravel 4

当我们需要访问存储库中的另一个 class 时,以下技术可以正常工作。

即。 命名空间应用; class AbcRepo 实现 AbcInterface {

}

namespace App;
class DefRepo implements DefInterface {

    protected $abc;

    public function __construct(AbcInterface $abc) {
      $this->abc = $abc;    
    } 
} 

因此,当我在服务提供商中注册时:

$app->bind('App\DefInterface', function($app) {
   return new App\DefRepo(App::make('App\AbcInterface'));
});

困扰我的问题是:

 new App\DefRepo(App::make('App\AbcInterface')); 

这是正确的做法吗?我们(我的意思是我)从不对服务提供进行单元测试,所以我可以简单地忽略它,因为它有效。但任何输入将不胜感激。

这是正确的,但是最好让类型提示依赖注入初始化 RefRepo

$app->bind('App\DefInterface', 'App\DefRepo');
$app->bind('App\AbcInterface', 'App\AbcRepo');

这意味着 Laravel 将在需要实现 DefInterface 的 class 时尝试初始化 DefRepo。因为 DefRepo 需要 AbcInterface,所以 class AbcRepo 将被注入到实例中。