Выполнить зависимость при вызове класса в Laravel (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 в моем конструкторе?

0

Решение

Сделайте ключ контейнера IoC фактическим именем класса:

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]