Laravel 4上的依赖注入

时间:2015-01-05 07:03:17

标签: laravel laravel-4 phpunit

当我们需要访问存储库中的另一个类时,以下技术可以按预期工作。

即。     命名空间App;     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')); 

这是正确的方法吗?我们(我的意思是)从不对服务提供进行单元测试,因此我可以忽略它,因为这有效。但任何意见都会受到赞赏。

1 个答案:

答案 0 :(得分:1)

这是正确的,但最好让typehinted依赖注入初始化RefRepo

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

这意味着当需要实现DefRepo的类时,Laravel将尝试初始化DefInterface。由于DefRepo需要AbcInterface,因此类AbcRepo将被注入实例。