Laravel 9에서 사용자 지정 서비스 공급자를 만드는 방법

5852 단어 laravel
원래 @https://codeanddeploy.com에 게시된 샘플 코드를 방문하여 다운로드합니다.
https://codeanddeploy.com/blog/laravel/how-to-create-custom-service-provider-in-laravel-9

이 게시물에서는 Laravel 9에서 사용자 정의 서비스 제공자를 생성하는 방법을 공유할 것입니다. Laravel 로케일을 변경해야 하거나 애플리케이션 설정에서 시간대를 변경해야 하는 기능이 있는 경우. 그런 다음 이를 위해 서비스 제공업체를 이용하고 있습니다.

Artisan을 사용하여 Laravel에서 서비스 공급자 생성



명령을 실행해 보겠습니다php artisan make:provider AppConfigServiceProvider . AppConfigServiceProvider는 서비스 공급자 클래스 이름입니다. 필요에 따라 클래스 이름을 변경할 수 있습니다.

완료되면 AppConfigServiceProvider.php 안에 파일 app/Providers이 생성됩니다. 아래에 생성된 코드는 다음과 같습니다.

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;

class AppConfigServiceProvider extends ServiceProvider
{
    /**
     * Register services.
     *
     * @return void
     */
    public function register()
    {
        //
    }

    /**
     * Bootstrap services.
     *
     * @return void
     */
   public function boot()
    {

    }
}


보시다시피 register()boot() 두 가지 방법이 있습니다.

레지스터() 메서드



서비스 공급자의 register() 메서드를 사용하면 서비스 컨테이너에 대한 바인딩을 정의할 수 있습니다. 아래 샘플 코드는 다음과 같습니다.

public function register()
{
    $this->app->singleton(any_class, function ($app) {
        return new AnyClass($app);
    });
}

$this->app는 애플리케이션의 내부 설정에 액세스하는 데 사용하는 Laravel 내부에서 사용할 수 있는 전역 변수입니다.
singleton는 Ruby 모듈에서 가져온 특성입니다. 한 번만 확인해야 하는 컨테이너에 클래스 또는 인터페이스를 바인딩하는 데 도움이 됩니다. 싱글톤 바인딩이 해결되면 후속 호출에서 새 인스턴스 대신 동일한 개체 인스턴스가 반환됩니다.

부트() 메서드


boot() 메서드는 register() 메서드에 등록된 모든 서비스에 액세스하는 데 사용됩니다. 그래서 내 예제에서 Laravel 로케일과 시간대를 원래 구성에서 변경하려는 경우 등록된 모든 서비스에 액세스할 수 있도록 boot() 메서드 내부에 코드를 구현해야 하는 이유입니다.

여기에 나의 예가 있습니다.

/**
 * Bootstrap services.
 *
 * @return void
 */
public function boot()
{

    app()->setLocale(
        setting('locale') 
        ?? 
        config('app.locale')
    );

    config([
        'app.timezone' => 
            setting('timezone') 
            ?? 
            config('app.timezone')
    ]);
}


사용자 지정 공급자 구성을 완료한 후에는 내부에 등록config/app.php하여 활성화해야 합니다.

그것을하는 방법? 먼저 공급자 키 또는 this'providers' => [...]를 검색한 다음 해당 배열 내부에 네임스페이스 또는 thisApp\Providers\AppConfigServiceProvider::class,를 추가합니다. 아래 예를 참조하십시오.

'providers' => [
    ...
    /**
     * Setting Service Providers..
     */
    App\Providers\AppConfigServiceProvider::class,
],


보시다시피 애플리케이션 설정에 따라 로케일과 시간대를 변경합니다. 도움이 되길 바랍니다 :)

참고: setting() 기능을 사용하려면 akaunting/laravel-setting 패키지를 설치해야 합니다.

이 튜토리얼이 도움이 되었으면 합니다. 이 코드를 다운로드하려면 여기https://codeanddeploy.com/blog/laravel/how-to-create-custom-service-provider-in-laravel-9를 방문하십시오.

행복한 코딩 :)

좋은 웹페이지 즐겨찾기