Les service providers sont un composant essentiel dans l'initialisation d'une application boostrap. Ils vont permettre d'enregistrer des "services" qui pourront ensuite être appelés dans le reste de l'application au travers de l'injection de dépendance ou en utilisant le conteneur directement.
Pour enregistrer un service il est possible de le déclarer dans la fonction register() d'un service Provider.
Une fois ce service enregistré on peut l'utiliser n'importe où dans l'application à l'aide de la méthode globale app().
L'accès à un service va automatiquement instancier l'objet comme on l'a défini dans le provider.
Injection de dépendances
Il est aussi possible de définir le service en utilisant le nom de la classe plutôt qu'une chaîne de caractère arbitraire.
Cela permet ensuite de profiter de l'injection de dépendance. Lorsque Laravel va essayer d'instancier une classe il sera capable de regarder les dépendances nécessaire. Si une dépendance correspond à un service qu'il connait, il injectera automatiquement le service en question.
Cela peut aussi être utilisé pour des composants du framework en remplacement des façades.