在Laravel(IoC Container)中调用类时执行依赖项

时间:2014-11-07 02:29:07

标签: php laravel laravel-4 ioc-container

我正在自己创建一个小型Google Analytics服务,以便学习如何做这些事情。

所以我有一个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));
    });
}

我的AnalyticsService有一个doSomething()方法,可以从API获取数据 我将analytics IoC绑定绑定到Analytics外观。

所以在设置时,我可以从我的控制器中调用Analytics::doSomething();。哪个工作正常。

但是我想从构造函数中将AnalyticsService注入到我的控制器中..就像这样:

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

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

1 个答案:

答案 0 :(得分:0)

使IoC容器密钥成为实际的类名:

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