2014-11-07 86 views
0

我自己创建一个小的Google Analytics服务来玩弄并学习如何执行此类操作。在Laravel中调用类时执行依赖关系(IoC容器)

所以我有一个AnalyticsServiceProvider其中包含:

public function register() 
{ 
    $this->app->bind('analytics', function() { 
     $client = new Google_Client(); 
     $client->setApplicationName('Hodor Application'); 
     $client->setAssertionCredentials(new Google_Auth_AssertionCredentials($account, $scope, $key)); 

     return new AnalyticsService(new Google_Service_Analytics($client)); 
    }); 
} 

AnalyticsServicedoSomething()方法,它将从API获取数据。
我已将analytics IoC绑定到Analytics外观。

所以虽然这是设置,我可以从我的控制器调用Analytics::doSomething();。哪些工作正常。

但我想给AnalyticsService注入从构造我的控制器。像这样:

public function __construct(AnalyticsService $service) 
{ 
    $this->service = $service; 
} 

但是,这是行不通的,因为从AnalyticsServiceProvider不会代码执行。
在我的构造函数中注入AnalyticsService之后,有什么方法可以执行此操作?

回答

0

使IoC容器的关键是实际的类名:

public function register() 
{ 
    $this->app->bind('AnalyticsService', function() { 
     // register as before... 
    }); 
} 
+0

谢谢,不知道这是flexable这样。我必须在文档中阅读它! – guidsen 2014-11-07 11:07:03