2014-09-18 5 views
0

Facade와 ServiceProvider를 작성한 오류 클래스가 있습니다.Laravel Facade의 종속성 삽입

나는 이런 식으로 그것을 사용 :

Err::getLastError(); 

또한 파일 유효성 검사를 위해 다른 클래스가 있습니다

FileValidate::IsImage($this->getUpload()); 

을 내가 그래서 같이 사용하는 FileValidate에 잘못 외관을 주입 할 :

FileValidate::Error()->getLastError(); 

어떻게해야합니까? 다음

function getLastError() 
{ 
    return Err::getLastError(); 
} 

그러나 대한 : 따라서 나는 다른 방법을 추가, 단지 FileValidate 객체가 반환 위 비록

function Error() 
{ 
    return $this; 
} 

:

지금 나의 접근 방식은 FileValidate 수업 시간에 내가 구성원을 추가한다는 것입니다 Err의 각 방법은 위의 예와 같이 FileValidate 및 모든 오류를 대체해야합니다. 좀 더 역동적 인 솔루션이 필요합니다. 당신의 FileValidate::Error() 방법에서

답변

2

오히려 FileValidate의 인스턴스보다 오류 클래스를 돌려 :

function Error() 
{ 
    return app()->make('Err'); 
} 

이 다른 클래스를 복제 할 필요없이 당신이 필요로하는 것을 무엇이든 거기에 방법이 있어야하는 당신의 오류 개체를 반환합니다 아무 이유.

또 다른 대안은 FileValidate의 생성자에 오류 개체를 추가 할 수 있습니다 : 파일의 유효성 검사의 서비스 제공을 업데이트 한 후

public function __construct(Err $error) { 
    $this->$error = $error; 
} 

, 당신은 당신의 Error 방법에서 객체를 반환 할 수 :

public function Error() 
{ 
    return $this->error; 
} 
+0

대단히 감사합니다. –

+0

Laravel의 외관에 생성자를 추가하는 방법이 있는지 물어볼 수 있습니까? 어떻게 __construct() 객체가 Facace를 통해 액세스 될 때 작동해야합니까? –

+1

생성자를 파사드에 추가하지 않고 파사드가 참조하는 기본 클래스에 생성자를 추가합니다 –