Laravel은 내가 작성한 내용을 언제 서비스 제공자에 입력합니까?
黄舟
黄舟 2017-05-16 16:47:48
0
3
368

예를 들어, APP 디렉토리 아래에 새로운 Services 디렉토리를 생성하고 그 안에 EmailService.php라는 이메일 전송 서비스를 배치했습니다. 다른 컨트롤러에서 이를 호출하고 싶을 때 다음과 같이 직접 인용할 수 있습니다.

으아악

이렇게 하면 정상적으로 사용할 수 있습니다.

그럼 질문은
1. 위와 같이 정상적으로 사용할 수 있다면 어떤 상황에서 이 서비스service Provider에 배치해야 할까요? 服务放到服务提供者里面去?
2、服务提供者服务容器之间的关系一直搞不太清楚,究竟服务是放到服务容器里面还是服务提供者里面?服务提供者服务容器2. 서비스 제공자서비스 컨테이너 사이의 관계가 명확한 적이 없습니다. 서비스서비스 컨테이너 내부인가요, 아니면 서비스 제공업체인가요? 서비스 제공업체서비스 컨테이너의 각각의 책임은 무엇입니까?

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

모든 응답(3)
習慣沉默

in服务提供者服务放进服务容器.

종속성 주입 컨테이너에 대한 추가 소개: 배선을 중단하고 Laravel의 컨테이너를 사랑하는 방법을 알아보세요

洪涛

질문자는 이런 질문을 할 것 같습니다. 질문자는 아직 의존성 주입과 라라벨의 서비스 컨테이너에 대해 잘 모르는 것 같습니다. (물론 저는 잘 이해하지 못합니다. 다음은 저의 단순한 이해입니다.)

컨트롤러 내부의 특정 네임스페이스 아래에 클래스를 직접 지정하는 경우(이 클래스는 인터페이스(계약)의 구현이어야 함) 이 클래스는 컨트롤러와 결합됩니다. 이 구현 클래스를 수정하려면 컨트롤러와 컨트롤러에서 호출되는 메서드를 수정해야 합니다.

서비스 제공자에 작성하면 첫째로 분리될 수 있고(컨트롤러 메소드의 매개변수는 유형 힌트를 통해 서비스 구현 클래스에 주입됨), 둘째로 서비스가 다른 서비스에도 의존하는 경우 laravel의 서비스는 컨테이너는 이러한 종속성을 자동으로 처리합니다. 컨트롤러 앞에서 여러 사용 구문을 사용하는 대신 이러한 종속 라이브러리를 직접 가져옵니다. 세 번째는 인터페이스를 통해 서비스가 제공해야 하는 메서드만 제공하도록 제한하는 것입니다(단일 책임).

기본적인 이해이니, 틀린 부분이 있으면 댓글로 지적해주세요.

我想大声告诉你

서비스 컨테이너와 서비스 제공자는 서로 다른 것이므로 의무적인 관계가 없으므로 아래에서 별도로 설명하겠습니다.

서비스 컨테이너:
는 전역 연관 배열 변수로, 여기에 항목을 저장하고 어디에서나 이름으로 개체를 검색할 수 있습니다.

서비스 제공자:
각 서비스 제공자에는

와 같이 전체 프로그램에서 사용되는 초기화 코드 조각이 있습니다.

애플리케이션 초기화 시 경로 정의 로드
특정 유형의 관찰자 등록
데이터베이스에 연결하고 db 인스턴스를 서비스 컨테이너에 저장

위의 예에서 우리는 항상 이러한 초기화 코드를 작성해야 한다는 것을 알 수 있습니다. 단지 Laravel이 이를 사양으로 정의하여 초기화 코드를 분류하고 저장하도록 강요하는 것뿐입니다. (여전히 다양한 유형의 초기화 코드를 모두 넣을 수 있습니다 app/Providers/AppServiceProvider.php)

정정해주세요.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿