서비스 제공자와 서비스 컨테이너는 laravel을 사용하여 어떻게 작동합니까?
게시 됨: 2022-09-16Laravel은 핵심 기능을 이해하기 어렵기 때문에 경험 많은 개발자도 다루기가 매우 어려울 수 있습니다. 그러나 실제로 웹 개발은 흥미롭습니다.
기능 중 하나는 이 블로그에서 자세한 개요를 제공하는 서비스 공급자입니다. 또한 이 블로그에서는 서비스 컨테이너가 laravel에서 어떻게 작동하는지 설명할 것입니다.
이것들은 당신이 상상했던 것보다 더 간단합니다. 그렇게 말하고 바로 들어가 보겠습니다.
라라벨의 서비스 제공자는 무엇입니까?
라라벨 애플리케이션의 서비스 제공자는 애플리케이션이 부트스트랩되는 핵심 지점 역할을 합니다. 결과적으로 제공자는 라라벨의 기본 서비스를 서비스 컨테이너에 주입하고 애플리케이션의 서비스, 클래스 및 종속성을 서비스 컨테이너에 주입하는 데 사용됩니다.
이 예제의 공급자는 config/app.php에서 "providers"라는 이름의 배열로 찾을 수 있습니다. 아래 이미지를 참조하세요.
타사 서비스 공급자를 사용하려는 경우 서비스 공급자 배열 구성에 적용해야 합니다.
예를 들어 애플리케이션 인증에 필요한 Auth와 같이 전체 애플리케이션을 실행하는 일부 서비스 제공업체가 이미 있는 것을 볼 수 있습니다.
laravel에서 서비스 공급자를 만드는 방법은 무엇입니까?
서비스 제공자를 사용하려면 먼저 서비스 제공자를 생성해야 합니다. 결과적으로, 우리는 지금 서비스 제공자를 설정할 것입니다. 아래에 제공된 명령을 사용하여 필요한 서비스 공급자를 만들 수 있습니다.
php artisan make:provider MyServiceProvider
명령을 실행하면 응용 프로그램에 서비스 공급자가 생성되어 사용할 수 있습니다.
그런 다음 앱을 열고 제공자 폴더로 이동하여 서비스 제공자를 찾을 수 있습니다.
여기에서 register() 및 boot()의 두 가지 메서드를 볼 수 있습니다.
레지스터() 메서드
register() 메서드를 사용하여 서비스 컨테이너에 대한 바인딩을 정의할 수 있다는 사실을 아는 것이 매우 중요합니다. 예를 들어 아래 코드를 참조하세요.
$this->app 은 앱을 통해 싱글톤 클래스에 접근할 수 있는 라라벨의 전역 변수입니다.
싱글톤은 특성입니다. 이 특성을 적용하면 앱에서 매개변수로 전송되는 클래스가 애플리케이션 전체에서 하나의 중복(인스턴스)만 있어야 한다는 것을 애플리케이션에 알리는 것입니다. 이것은 MyClass가 한 번 해결되고 my_class 변수를 사용하여 액세스할 수 있는 인스턴스가 하나만 있음을 의미합니다.
boot() 메서드
boot() 메서드를 사용하면 register 메서드를 사용하여 이전에 등록된 모든 서비스에 액세스할 수 있습니다. 따라서 이 방법을 사용하여 전체 서비스를 애플리케이션에 포함할 수 있습니다.

서비스 제공자 등록은 어떻게 하나요?
이제 서비스 공급자를 구축했으므로 구성 파일에 등록하여 프로세스를 완료해야 합니다. 아래 이미지에 표시된 방식으로 여기에 등록해야 합니다.
모든 서비스 공급자는 응용 프로그램이 실행될 때마다 먼저 로드됩니다. 서비스 제공자는 Laravel 애플리케이션의 주요 중심 위치이며, 이 블로그에서 이전에 논의한 대로 완전한 애플리케이션 실행을 지원하기 위해 항상 존재합니다.
라라벨의 서비스 컨테이너는 무엇입니까?
서비스 컨테이너는 단일 서버에서 라라벨 애플리케이션을 실행하는 데 필요한 모든 바인딩을 저장할 수 있는 강력한 메커니즘입니다.
애플리케이션의 모든 것은 서비스 컨테이너의 도움으로 함께 묶일 수 있습니다.
laravel에서 서비스 컨테이너를 사용하는 방법은 무엇입니까?
다음 시나리오를 고려하십시오. 덧셈, 곱셈 등과 같은 특정 기본 연산을 수행하는 MathService라는 클래스가 있습니다. 이 클래스의 코드는 아래에 나와 있습니다.
위에서 볼 수 있듯이 배열 합 함수를 사용하여 숫자 배열의 합을 계산하는 방법과 배열 곱 함수를 사용하여 배열로 제공되는 모든 숫자를 곱하는 두 가지 방법이 있습니다.
배열 합 함수는 배열 합 함수를 사용하여 숫자 배열의 합을 계산하는 반면 배열 곱 함수는 배열로 제공된 모든 숫자를 곱합니다.
서비스 제공자를 사용하려면 먼저 서비스를 서비스 컨테이너에 바인딩해야 합니다.
그러나 그렇게 함으로써 우리는 Laravel에게 MathService라는 이름의 컨테이너에 MathService 컨테이너를 유지하고 클래스의 인스턴스가 필요할 때마다 이를 반환하도록 지시합니다. 이것은 클래스의 일회성 바인딩이며 우리 프로그램에서 원하는 수의 인스턴스를 얻는 데 사용할 수 있습니다.
앞서 언급했듯이 서비스 컨테이너와 공급자는 모든 라라벨 애플리케이션의 중요한 구성 요소입니다. 앞서 언급했듯이 당사는 고유한 서비스 제공업체를 설계하거나 타사 서비스 제공업체를 당사 애플리케이션에 통합할 수 있습니다.
예를 들어, 라라벨에서 소셜라이트를 활용하고 싶다면 앱 서비스 제공자 파일에 복사하여 붙여넣고 애플리케이션의 어느 곳에서나 사용할 수 있습니다.
요약하자면
애플리케이션을 구성할 때 서비스 제공업체가 활용됩니다. 서비스 컨테이너 바인딩 외에도 경로, 미들웨어 및 이벤트 리스너와 같은 기타 주요 요소도 구성 파일의 이 섹션에 등록됩니다.
서비스 제공자는 요청 자체가 처리되기 전에 수행되어 시스템에서 요청을 처리하기 전에 원하는 모든 것이 제자리에 있고 설정되도록 합니다. 일부 서비스 제공자의 실행은 정기적으로 발생하는 반면 다른 서비스 제공자는 필요할 때만 수행됩니다("지연된 제공자").
서비스 컨테이너를 사용할 때 종속성 주입(예: 컨트롤러 클래스의 매개변수 주입)과 바인딩 및 확인 클래스(예: 주어진 계약에 대해 인스턴스화할 클래스)에 사용할 수 있습니다.
웹 개발은 힘든 과정일 수 있습니다. 그렇기 때문에 webdew에는 웹사이트와 애플리케이션을 만들고 작업을 더 쉽게 만드는 데 도움이 되는 숙련된 웹 개발자 팀이 있습니다.
웹 디자인과 웹 개발에 손이 필요하십니까? 저희에게 연락하십시오!
편집자: 암루타