Comment fonctionnent les fournisseurs de services et les conteneurs de services avec laravel ?
Publié: 2022-09-16Laravel peut parfois être très difficile à gérer, même pour les développeurs expérimentés, car la fonctionnalité de base est difficile à comprendre. Mais en effet, le développement web est intéressant.
L'une des fonctionnalités est ses fournisseurs de services, dont je donnerai un aperçu détaillé dans ce blog. J'expliquerai également comment fonctionne un conteneur de services dans laravel dans ce blog.
Celles-ci sont plus simples que vous ne l'auriez imaginé. Cela dit, allons-y directement.
Quels sont les fournisseurs de services à laravel ?
Les fournisseurs de services d'une application Laravel servent de point central à partir duquel l'application est amorcée. En conséquence, les fournisseurs sont utilisés pour injecter les services de base de laravel dans le conteneur de services ainsi que les services, les classes et leurs dépendances de notre application dans le conteneur de services.
Le fournisseur de cet exemple peut être trouvé dans config/app.php sous la forme d'un tableau nommé "providers". Reportez-vous à l'image ci-dessous :
Supposons que vous souhaitiez utiliser un fournisseur de services tiers, vous devez alors en faire la demande dans la configuration du tableau de fournisseurs de services.
Vous pouvez voir certains fournisseurs de services qui exécutent déjà l'intégralité de l'application, par exemple, Auth, qui est requis pour l'authentification de l'application.
Comment créer des prestataires de services en laravel ?
Pour utiliser un fournisseur de services, vous devez d'abord en créer un. En conséquence, nous allons mettre en place un fournisseur de services dès maintenant. Vous pouvez utiliser la commande fournie ci-dessous pour créer le fournisseur de services dont vous avez besoin.
php artisan make:provider MyServiceProvider
Lorsque vous exécutez la commande, un fournisseur de services sera créé dans votre application, que vous pourrez ensuite utiliser.
Après cela, ouvrez votre application et accédez au dossier des fournisseurs, où vous localiserez votre fournisseur de services.
Ici, vous verrez deux méthodes, register() et boot().
La méthode register()
Il est très important de savoir que la méthode register() nous permet de définir des liaisons à notre conteneur de service. Par exemple, voir le code ci-dessous :
$this->app est une variable globale dans laravel qui peut accéder à une classe singleton via l'application.
Le singleton est un trait. Lorsque vous appliquez ce trait, vous informez l'application que toute classe envoyée en tant que paramètre dans l'application ne doit avoir qu'un seul doublon (instance) dans toute l'application. Cela signifie que MyClass sera résolu une fois et n'aura qu'une seule instance, accessible à l'aide de la variable my_class.
La méthode boot()
La méthode boot() vous permet d'accéder à tous les services précédemment enregistrés à l'aide de la méthode register. Vous pouvez ainsi inclure l'intégralité du service dans votre application en utilisant cette méthode.
Comment enregistrer un fournisseur de services ?
Comme vous avez maintenant créé votre fournisseur de services, vous devrez l'enregistrer dans votre fichier de configuration pour terminer le processus. Vous devez vous inscrire ici de la manière décrite dans l'image ci-dessous :

Tous les fournisseurs de services se chargeront en premier à chaque exécution de l'application. Les fournisseurs de services sont le principal lieu central pour les applications Laravel, et ils sont toujours là pour vous aider à exécuter l'application complète, comme indiqué précédemment dans ce blog.
Que sont les conteneurs de service dans laravel ?
Le Service Container est un mécanisme puissant qui nous permet de stocker toutes les liaisons nécessaires pour exécuter une application Laravel sur un seul serveur.
Tout dans l'application peut être lié avec l'aide d'un conteneur de services.
Comment utiliser le conteneur de service dans laravel?
Considérez le scénario suivant : nous avons une classe nommée MathService qui est chargée d'effectuer certaines opérations fondamentales telles que l'addition, la multiplication, etc. Le code de cette classe est fourni ci-dessous.
Comme vous pouvez le voir ci-dessus, il existe deux méthodes pour calculer la somme des tableaux de nombres à l'aide de la fonction de somme de tableau et pour multiplier tous les nombres fournis sous forme de tableau à l'aide de la fonction de produit de tableau.
La fonction de somme de tableau calcule la somme du tableau de nombres à l'aide de la fonction de somme de tableau, tandis que la fonction de produit de tableau multiplie tous les nombres fournis sous forme de tableau.
Pour utiliser le fournisseur de services, nous devons d'abord lier le service au conteneur de services.
Cependant, ce faisant, nous demandons à Laravel de conserver le conteneur MathService dans le conteneur portant le nom MathService et de le renvoyer chaque fois que nous avons besoin d'une instance d'une classe. Il s'agit d'une liaison unique d'une classe, et elle peut être utilisée pour obtenir n'importe quel nombre d'instances de notre programme.
Comme indiqué précédemment, les conteneurs de services et les fournisseurs sont des composants essentiels de chaque application Laravel. Comme indiqué précédemment, nous pouvons concevoir nos propres fournisseurs de services uniques ou nous pouvons incorporer des fournisseurs de services tiers dans nos applications.
Par exemple, si vous souhaitez utiliser socialite dans Laravel, vous pouvez simplement le copier et le coller dans le fichier du fournisseur de services d'application et l'utiliser n'importe où dans votre application.
En résumé
Lors de la configuration de votre application, des fournisseurs de services sont utilisés. En plus des liaisons de conteneur de service, d'autres éléments clés tels que les routes, le middleware et les écouteurs d'événement sont également enregistrés dans cette section du fichier de configuration.
Les prestataires de services sont exécutés avant que la demande elle-même ne soit traitée, garantissant que tout ce que vous voulez est en place et configuré avant que la demande ne soit traitée par le système. L'exécution de certains prestataires de services se produit de manière régulière tandis que d'autres prestataires de services ne sont exécutés que lorsqu'ils sont nécessaires ("fournisseurs retardés").
Lorsque vous utilisez un conteneur de service, vous pouvez l'utiliser pour l'injection de dépendances (par exemple, l'injection de paramètres dans vos classes de contrôleur) ainsi que pour les classes de liaison et de résolution (comme la classe à instancier pour un contrat donné).
Le développement Web peut être un processus difficile. C'est pourquoi Webdew dispose d'une équipe de développeurs Web qualifiés pour vous aider à créer des sites Web et des applications et vous faciliter la tâche.
Besoin d'un coup de main avec la conception Web et le développement Web? Prenez contact avec nous!
Editeur : Amrutha