recherche

Maison  >  Questions et réponses  >  le corps du texte

Quand Laravel mettra-t-il ce que j’écris dans le fournisseur de services ?

Par exemple, j'ai créé un nouveau répertoire Services dans le répertoire APP, et y ai placé un service d'envoi d'emails, EmailService.php. Lorsque je veux l'appeler dans d'autres contrôleurs, je peux directement citer :

.
use App\Services\EmailService;

De cette façon, vous pouvez l'utiliser normalement.

Alors la question est :
1. S'il peut être utilisé normalement comme ci-dessus, dans quelles circonstances ce service doit-il être placé chez le fournisseur de services ? 服务放到服务提供者里面去?
2、服务提供者服务容器之间的关系一直搞不太清楚,究竟服务是放到服务容器里面还是服务提供者里面?服务提供者服务容器2. La relation entre le fournisseur de services et le conteneur de services n'a jamais été claire. Le service est-il placé dans le conteneur de services À l'intérieur ou Fournisseur de services ? Quelles sont les responsabilités respectives du Fournisseur de services et du Conteneur de services ?

黄舟黄舟2753 Il y a quelques jours371

répondre à tous(3)je répondrai

  • 習慣沉默

    習慣沉默2017-05-16 16:49:48

    dans服务提供者服务放进服务容器.

    Une autre introduction aux conteneurs d'injection de dépendances : apprenez à arrêter le câblage et à aimer le conteneur de Laravel

    répondre
    0
  • PHP中文网

    PHP中文网2017-05-16 16:49:48

    Le questionneur posera cette question. Je suppose que le questionneur ne sait toujours pas grand-chose sur l'injection de dépendances et le conteneur de services de Laravel. (Bien sûr, je ne le comprends pas très bien. Ce qui suit n'est que ma simple compréhension)

    Si vous spécifiez directement une classe sous un certain espace de noms à l'intérieur de votre contrôleur (cette classe doit être une implémentation d'une interface (contrat)), alors cette classe sera couplée au contrôleur. Lorsque vous souhaitez modifier cette classe d'implémentation, vous devez modifier le contrôleur et les méthodes appelées dans le contrôleur.

    Si vous l'écrivez dans le fournisseur de services, d'une part, il peut être découplé (les paramètres de la méthode du contrôleur sont injectés dans la classe d'implémentation du service via des indices de type), et d'autre part, si le service dépend également d'autres services, le service de laravel Le Le conteneur gère ces dépendances automatiquement. Au lieu d'utiliser un tas de syntaxes d'utilisation devant le contrôleur pour importer vous-même ces bibliothèques dépendantes. Troisièmement, l'interface restreint le service à fournir uniquement les méthodes qu'il devrait fournir (responsabilité unique).

    Compréhension de base, veuillez signaler dans la zone de commentaires s'il y a des erreurs.

    répondre
    0
  • 我想大声告诉你

    我想大声告诉你2017-05-16 16:49:48

    Conteneur de services et fournisseur de services sont deux choses différentes, sans aucune relation obligatoire, j'en parlerai donc séparément ci-dessous.

    Conteneur de service :
    est une variable de tableau associatif global, qui y stocke des éléments, puis l'objet peut être récupéré par son nom n'importe où.

    Fournisseur de services :
    Dans chaque fournisseur de services, il y a un morceau de code d'initialisation qui sera utilisé par l'ensemble du programme, tel que

    Chargez la définition de la route lorsque l'application est initialisée
    Enregistrez un certain type d'observateur
    Connectez-vous à la base de données et stockez l'instance de base de données dans le conteneur de service

    Nous pouvons voir dans l'exemple ci-dessus que nous devons toujours écrire ces codes d'initialisation. C'est juste que Laravel le définit comme une spécification, vous obligeant à classer et stocker le code d'initialisation. (Vous pouvez toujours mettre différents types de code d'initialisation dedans app/Providers/AppServiceProvider.php)

    Veuillez me corriger.

    répondre
    0
  • Annulerrépondre