2014-11-07 87 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