¿Cómo funcionan los proveedores de servicios y los contenedores de servicios usando laravel?
Publicado: 2022-09-16Laravel a veces puede ser muy difícil de manejar, incluso para desarrolladores experimentados, ya que la funcionalidad principal es difícil de entender. Pero de hecho, el desarrollo web es interesante.
Una de las funcionalidades son sus proveedores de servicios, sobre los cuales daré una descripción detallada en este blog. También explicaré cómo funciona un contenedor de servicios en laravel en este blog.
Estos son más simples de lo que podrías haber imaginado. Habiendo dicho eso, entremos directamente en ello.
¿Qué son los proveedores de servicios en laravel?
Los proveedores de servicios en una aplicación Laravel sirven como el punto central desde el cual se inicia la aplicación. Como resultado, los proveedores se utilizan para inyectar los servicios básicos de laravel en el contenedor de servicios, así como los servicios, clases y dependencias de nuestra aplicación en el contenedor de servicios.
El proveedor de este ejemplo se puede encontrar en config/app.php como una matriz llamada "proveedores". Consulte la imagen a continuación:
Supongamos que desea utilizar cualquier proveedor de servicios de terceros, entonces debe aplicar en la configuración de la matriz de proveedores de servicios.
Puede ver algunos proveedores de servicios que ya ejecutan la aplicación completa, por ejemplo, Auth, que se requiere para la autenticación de la aplicación.
¿Cómo crear proveedores de servicios en laravel?
Para utilizar un proveedor de servicios, primero debe crear uno. Como resultado, configuraremos un proveedor de servicios ahora mismo. Puede utilizar el comando proporcionado a continuación para crear cualquier proveedor de servicios que necesite.
php crafty make:proveedor MyServiceProvider
Cuando ejecute el comando, se creará un proveedor de servicios en su aplicación, que luego podrá usar.
Después de eso, abra su aplicación y navegue a la carpeta de proveedores, donde encontrará su proveedor de servicios.
Aquí verá dos métodos, register() y boot().
El método de registro()
Es muy importante saber el hecho de que el método register() nos permite definir enlaces a nuestro contenedor de servicios. Por ejemplo, vea el código a continuación:
$this->app es una variable global en laravel que puede acceder a una clase singleton a través de la aplicación.
Singleton es un rasgo. Cuando aplica este rasgo, le informa a la aplicación que cualquier clase que se envíe como parámetro en la aplicación solo debe tener un duplicado (instancia) en toda la aplicación. Esto significa que MyClass se resolverá una vez y tendrá solo una instancia, a la que se puede acceder mediante la variable my_class.
El método de arranque()
El método boot() le permite acceder a todos los servicios que se registraron previamente mediante el método de registro. Por lo tanto, puede incluir todo el servicio en su aplicación utilizando este método.
¿Cómo registrar un proveedor de servicios?
Como ahora ha creado su proveedor de servicios, deberá registrarlo en su archivo de configuración para completar el proceso. Debe registrarse aquí de la manera que se muestra en la siguiente imagen:

Todos los proveedores de servicios se cargarán primero cada vez que se ejecute la aplicación. Los proveedores de servicios son el lugar central principal para las aplicaciones de Laravel, y siempre están ahí para ayudarlo a ejecutar la aplicación completa, como se discutió anteriormente en este blog.
¿Qué son los contenedores de servicio en laravel?
El contenedor de servicios es un mecanismo poderoso que nos permite almacenar todos los enlaces necesarios para ejecutar una aplicación Laravel en un solo servidor.
Todo en la aplicación se puede vincular con la ayuda de un contenedor de servicios.
¿Cómo usar el contenedor de servicio en laravel?
Considere el siguiente escenario: tenemos una clase llamada MathService que es responsable de realizar ciertas operaciones fundamentales como la suma, la multiplicación, etc. El código para esta clase se proporciona a continuación.
Como puede ver arriba, hay dos métodos para calcular la matriz de suma de números usando la función de suma de matriz y multiplicando todos los números proporcionados como una matriz usando la función de producto de matriz.
La función de suma de matriz calcula la suma de la matriz de números utilizando la función de suma de matriz, mientras que la función de producto de matriz multiplica todos los números proporcionados como una matriz.
Para utilizar el proveedor de servicios, primero debemos vincular el servicio al contenedor de servicios.
Sin embargo, al hacerlo, le indicamos a Laravel que mantenga el contenedor MathService en el contenedor con el nombre MathService y que lo devuelva cada vez que necesitemos una instancia de una clase. Este es un enlace único de una clase, y puede usarse para obtener cualquier número de instancias de nuestro programa.
Como se indicó anteriormente, los contenedores y proveedores de servicios son componentes críticos de todas las aplicaciones de Laravel. Como se indicó anteriormente, podemos diseñar nuestros propios proveedores de servicios únicos o podemos incorporar proveedores de servicios de terceros en nuestras aplicaciones.
Como ejemplo, si desea utilizar socialite en Laravel, puede simplemente copiarlo y pegarlo en el archivo del proveedor de servicios de la aplicación y usarlo en cualquier parte de su aplicación.
Resumiendo
Al configurar su aplicación, se utilizan proveedores de servicios. Además de los enlaces del contenedor de servicios, en esta sección del archivo de configuración también se registran otros elementos clave, como rutas, middleware y detectores de eventos.
Los proveedores de servicios se realizan antes de que se procese la solicitud en sí, lo que garantiza que todo lo que desea esté en su lugar y configurado antes de que el sistema maneje la solicitud. La ejecución de algunos proveedores de servicios ocurre de manera regular, mientras que otros proveedores de servicios solo se realizan cuando son necesarios ("proveedores retrasados").
Cuando utiliza un contenedor de servicios, puede usarlo para inyección de dependencia (por ejemplo, inyección de parámetros en sus clases de controlador), así como clases de enlace y resolución (como qué clase instanciar para un contrato determinado).
El desarrollo web puede ser un proceso difícil. Es por eso que webdew cuenta con un equipo de desarrolladores web calificados para ayudarlo a crear sitios web y aplicaciones y facilitarle las cosas.
¿Necesita una mano con el diseño web y el desarrollo web? ¡Póngase en contacto con nosotros!
Editor: Amrutha