2017-01-25 7 views
1

내게 너무 분명하지 않다 laravel. 우리의 상사는 이렇게 될하기 위해 stucture를 원하는 :구조 방법은 우리가 생성자를 필요로하고 누군가가 내 컨트롤러에서이 코드에 대해 나에게 설명 할 수있는 이유에 대해 혼란 스러워요

컨트롤러 -> 서비스 -> 저장소 -> 모달 -> 데이터베이스

그것은 꽤 똑바로 앞으로의 난이 길 갈거야 때

컨트롤러 -> 모달 -> 데이터베이스.

하지만 첫 번째 것을 따라야합니다. 위의 코드는 컨트롤러의 샘플입니다. MerchantServicePaymentService의 두 가지 서비스가 위의 코드에서 컨트롤러

의 샘플입니다. 하지만 정확히 어떤 변수가 Merchant service 변수 및 지불 변수와 함께하고있는 생성자가 무엇인지 이해가 안 돼, Merchant servicePaymentService의 개체를 시작하는 무엇입니까 ??

답변

1

Laravel 서비스 컨테이너는 클래스 종속성을 관리하고 종속성 주입을 수행하기위한 강력한 도구입니다. 의존성 주입은 기본적으로 다음을 의미하는 멋진 문구입니다. 클래스 종속성은 생성자 또는 경우에 따라 "setter"메소드를 통해 클래스에 "주입"됩니다. 이 예에서

public function __construct(UserRepository $users) 
{ 
    $this->users = $users; 
} 

상기 UserController 데이터 소스로부터 사용자가 검색 할 필요가있다. 그래서 우리는 사용자를 검색 할 수있는 서비스를 삽입 할 것입니다. 이러한 맥락에서 우리 UserRepository는 Eloquent를 사용하여 데이터베이스에서 사용자 정보를 검색합니다. 그러나 저장소가 삽입 되었기 때문에 다른 구현으로 쉽게 바꿀 수 있습니다. 우리는 또한 응용 프로그램을 테스트 할 때 쉽게 "모의"하거나 UserRepository의 더미 구현을 만들 수 있습니다. 정보 주셔서

https://laravel.com/docs/5.3/container

+0

thx Alexey Mezenin. 내가 사용자 로그인을 위해 이것을하고 싶다면 조금 설명해 주시겠습니까? UserLoginController -> LoginService -> LoginReposity. – Mikethetechy

+0

@MohamedManas [Laravel built-in auth scaffold] (https://laravel.com/docs/5.3/authentication#introduction)를 사용하는 것이 좋습니다. 저장소 또는 서비스를 만들 필요가 없습니다. –

+0

네, 권한이 내장되어 있습니다. 전체 프로세스가 훨씬 쉬워졌습니다. 처음에는 그렇게 만들었지 만, 저는이 구조를 통과하길 원합니다. (.. UserLoginController -> LoginService -> Loginrepository - > DB 그 이유는 메신저 붙어 – Mikethetechy

0

이 디자인 패턴은 depedency injection입니다.
이것은 좋은 방법이므로 테스트를 쉽게 작성하고 서비스를 변경할 수 있습니다.

dependecy injectionhere on SO itself 또는 here on wikipedia에 대한 자세한 내용을 볼 수 있습니다.

+0

들으 ... 링크가 컨트롤러에서 저장소에 대해 이야기 ... 메신저 아직도 혼란 .. 같은 예를 들어 나는 UserLoginController을 가지고 내가이 작업을 수행해야하는 경우 : UserLoginController-> LoginService-> LoginRepository-> 모달. 모달 후 나는 단순히 데이터베이스에 데이터를 보내는 그것을 얻을. ..하지만 어떻게 내가 LoginRepository까지 UserLoginController에서 일을 어떻게해야합니까? 무지 미안해 ... – Mikethetechy