Я сам создаю небольшой сервис 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
в моем конструкторе?
Сделайте ключ контейнера IoC фактическим именем класса:
public function register()
{
$this->app->bind('AnalyticsService', function () {
// register as before...
});
}
Других решений пока нет …