Como os provedores de serviços e contêineres de serviços funcionam usando laravel?
Publicados: 2022-09-16Às vezes, o Laravel pode ser muito difícil de lidar, mesmo para desenvolvedores experientes, pois a funcionalidade principal é difícil de entender. Mas, de fato, o desenvolvimento web é interessante.
Uma das funcionalidades são seus Provedores de Serviços, sobre os quais darei uma visão detalhada neste blog. Também explicarei como um contêiner de serviço funciona em laravel neste blog.
Estes são mais simples do que você poderia ter imaginado. Dito isso, vamos direto ao assunto.
O que são provedores de serviços em laravel?
Os provedores de serviço em um aplicativo Laravel servem como o ponto principal a partir do qual o aplicativo é inicializado. Como resultado, os provedores são usados para injetar os serviços básicos do laravel no contêiner de serviço, bem como os serviços, classes e suas dependências do nosso aplicativo no contêiner de serviço.
O provedor para este exemplo pode ser encontrado em config/app.php como um array chamado "providers". Consulte a imagem abaixo:
Suponha que você queira usar qualquer provedor de serviços de terceiros, então você deve aplicar na configuração da matriz do provedor de serviços.
Você pode ver alguns provedores de serviços já executando todo o aplicativo, por exemplo, Auth, que é necessário para autenticação do aplicativo.
Como criar provedores de serviços em laravel?
Para usar um provedor de serviços, você deve primeiro criar um. Como resultado, vamos configurar um provedor de serviços agora mesmo. Você pode usar o comando fornecido abaixo para criar qualquer provedor de serviços que precisar.
php artesão make:provedor MyServiceProvider
Quando você executa o comando, um provedor de serviços será criado em seu aplicativo, que você poderá usar.
Depois disso, abra seu aplicativo e navegue até a pasta de provedores, onde você localizará seu provedor de serviços.
Aqui você verá dois métodos, register() e boot().
O método registrar()
É muito importante saber o fato de que o método register() nos permite definir ligações ao nosso contêiner de serviço. Por exemplo, veja o código abaixo:
$this->app é uma variável global em laravel que pode acessar uma classe singleton através do aplicativo.
Singleton é uma característica. Ao aplicar esta característica, você está informando ao aplicativo que qualquer classe enviada como parâmetro no aplicativo deve ter apenas uma duplicata (instância) em todo o aplicativo. Isso significa que MyClass será resolvido uma vez e terá apenas uma instância, que pode ser acessada usando a variável my_class.
O método boot()
O método boot() permite acessar todos os serviços que foram registrados anteriormente usando o método register. Assim, você pode incluir todo o serviço em seu aplicativo utilizando este método.
Como cadastrar um provedor de serviços?
Como você já construiu seu provedor de serviços, será necessário registrá-lo em seu arquivo de configuração para concluir o processo. Você deve se registrar aqui da forma descrita na imagem abaixo:

Todos os provedores de serviços serão carregados primeiro toda vez que o aplicativo for executado. Os provedores de serviços são o principal local central para os aplicativos Laravel e estão sempre lá para ajudá-lo a executar o aplicativo completo, conforme discutido anteriormente neste blog.
O que são contêineres de serviço em laravel?
O Service Container é um mecanismo poderoso que nos permite armazenar todas as ligações necessárias para executar uma aplicação Laravel em um único servidor.
Tudo no aplicativo pode ser vinculado com a ajuda de um contêiner de serviço.
Como usar o contêiner de serviço em laravel?
Considere o seguinte cenário: temos uma classe chamada MathService que é responsável por fazer certas operações fundamentais como adição, multiplicação e assim por diante. O código para esta classe é fornecido abaixo.
Como você pode ver acima, existem dois métodos para calcular a soma dos números do array usando a função array sum e multiplicando todos os números fornecidos como um array usando a função array product.
A função array sum calcula a soma dos números do array usando a função array sum, enquanto a função array product multiplica todos os números fornecidos como um array.
Para usar o provedor de serviços, primeiro devemos vincular o serviço ao contêiner de serviço.
No entanto, ao fazer isso, estamos instruindo o Laravel a manter o contêiner MathService no contêiner com o nome MathService e a devolvê-lo sempre que precisarmos de uma instância de uma classe. Esta é uma ligação única de uma classe e pode ser usada para obter qualquer número de instâncias do nosso programa.
Como dito anteriormente, contêineres e provedores de serviços são componentes críticos de cada aplicativo Laravel. Conforme declarado anteriormente, podemos projetar nossos próprios provedores de serviços exclusivos ou podemos incorporar provedores de serviços terceirizados em nossos aplicativos.
Por exemplo, se você quiser utilizar o socialite no Laravel, basta copiá-lo e colá-lo no arquivo do provedor de serviços do aplicativo e usá-lo em qualquer lugar do seu aplicativo.
Resumindo
Ao configurar seu aplicativo, os provedores de serviços são utilizados. Além das ligações do contêiner de serviço, outros elementos-chave, como rotas, middleware e ouvintes de eventos, também são registrados nesta seção do arquivo de configuração.
Os prestadores de serviços são executados antes do processamento da solicitação em si, garantindo que tudo o que você deseja esteja no lugar e configurado antes de a solicitação ser processada pelo sistema. A execução de alguns prestadores de serviços ocorre de forma regular enquanto outros prestadores de serviços são realizados apenas quando solicitados ("prestadores em atraso").
Quando você utiliza um contêiner de serviço, pode usá-lo para injeção de dependência (por exemplo, injeção de parâmetro em suas classes de controlador), bem como classes de associação e resolução (como qual classe instanciar para um determinado contrato).
O desenvolvimento da Web pode ser um processo difícil. É por isso que o webdew tem uma equipe de desenvolvedores web qualificados para ajudar a criar sites e aplicativos e facilitar as coisas para você.
Precisa de ajuda com web design e desenvolvimento web? Entre em contato conosco!
Editor: Amrutha