2014-09-14 2 views
0

다른 서비스 공급자의 IoC에서 지연된 서비스를 검색하려고하면 오류가 발생합니다. HashingServiceProvidertrue$deffered = false 변경Laravel 지연된 서비스 종속성

class ServiceProvider extends \Illuminate\Support\ServiceProvider { 

    // ... 

    public function register() { 
     $router = \App::make('router'); // gets resolved 
     $hash = \App::make('hash'); // throws an error (Class hash does not exists) 
    } 

    // ... 

} 

이 문제를 해결합니다. 내가 뭘 잘못하고 있니?

+2

"내가 뭘 잘못하고 있니?" 정적 팩토리를 사용하여 종속성 주입을 시도합니다. – Danack

+0

정적이 아닙니다. laravel의 IoC에 익숙합니까? –

+1

'Yes :: it_is ($ static)' – Dan

답변

2

다른 서비스 제공 업체에 의존하는 경우는 boot 방법으로 그것을 할 : 여기

class ServiceProvider extends \Illuminate\Support\ServiceProvider { 

    public function boot() 
    { 
     $hash = $this->app['hash']; 
    } 

} 

이 견적의 the docs에서 : register 방법은 때 즉시 서비스 제공자라고

boot 명령은 요청이 라우팅되기 바로 전에 호출됩니다. 따라서 서비스 공급자의 작업이 이미 등록 된 다른 서비스 공급자에 의존하거나 다른 공급자가 바인딩 한 서비스를 재정의하는 경우 boot 메서드를 사용해야합니다.

+0

고맙습니다! 나는 그것을 놓쳐 버렸음에 틀림 없어. –

관련 문제