Maison  >  Article  >  cadre php  >  Guide d'utilisation du conteneur ThinkPHP6 : pratique d'injection de dépendances

Guide d'utilisation du conteneur ThinkPHP6 : pratique d'injection de dépendances

WBOY
WBOYoriginal
2023-08-27 08:00:55689parcourir

Guide dutilisation du conteneur ThinkPHP6 : pratique dinjection de dépendances

Guide d'utilisation des conteneurs ThinkPHP6 : La pratique de l'injection de dépendances

Introduction :
Dans le développement PHP moderne, l'utilisation de conteneurs pour implémenter l'injection de dépendances est un moyen technique courant. Dans la dernière version du framework ThinkPHP, ThinkPHP6, des composants de conteneur sont également intégrés pour permettre aux développeurs de pratiquer l'injection de dépendances. Cet article présentera en détail comment utiliser correctement les conteneurs dans ThinkPHP6 et utilisera un exemple de code pour aider les lecteurs à mieux comprendre.

1. Qu'est-ce qu'un conteneur ?
Un conteneur est un objet chargé de gérer l'instanciation et l'injection de dépendances des classes. Il injecte automatiquement des dépendances entre les objets en analysant et en générant des instances d'objet.

Dans ThinkPHP6, les composants de conteneur sont implémentés via le composant d'injection de dépendances de Symfony. Il fournit aux développeurs un moyen concis et rapide d'implémenter l'instanciation de classe et l'injection de dépendances.

2. Comment utiliser le conteneur

  1. Configuration du conteneur
    Dans ThinkPHP6, le fichier de configuration du conteneur se trouve dans le fichier supplier.php du répertoire de configuration. Nous pouvons définir comment la classe est instanciée et ses dépendances dans ce fichier.

Par exemple, nous devons configurer une classe nommée "demo", qui dépend d'une autre classe nommée "exemple", nous pouvons la configurer comme ceci :

return [
    'demo'    => [
        ppdemoDemo::class, // 类名
        ['example'], // 依赖的其他类
        true, // 是否为单例
    ],
];

Dans la configuration ci-dessus, nous définissons la classe ppdemoDemo comme "demo " dépend de la classe "exemple" et est spécifié comme mode singleton (true signifie singleton, false signifie non-singleton).

  1. Instancier des objets
    Une fois la configuration du conteneur terminée, nous pouvons utiliser le conteneur pour instancier les objets dont nous avons besoin. Tout d'abord, nous devons introduire la classe conteneur là où nous devons utiliser la classe :
use thinkContainer;

Ensuite, nous pouvons utiliser le conteneur pour instancier l'objet de la manière suivante :

$demo = Container::pull('demo');

Dans le code ci-dessus, nous utilisons le conteneur : :pull() pour instancier un objet nommé "demo" et l'affecter à la variable $demo.

  1. Enregistrer le conteneur
    Après avoir terminé la configuration dans le fichier de configuration du conteneur supplier.php, nous devons également enregistrer le conteneur lors du processus initial. Nous pouvons ajouter le code suivant après "Define Framework Directory" dans le fichier d'entrée du projet public/index.php :
require __DIR__ . '/../vendor/autoload.php';

// 注册容器
    hinkContainer::getInstance()->register();

Dans le code ci-dessus, nous utilisons la méthode Container::getInstance() pour obtenir l'instance du conteneur, et utilisons méthode register() pour enregistrer le conteneur.

3. Résumé
Grâce à l'introduction de cet article, nous avons découvert la méthode d'utilisation des conteneurs pour implémenter l'injection de dépendances dans ThinkPHP6. Nous devons d’abord configurer le conteneur dans le fichier de configuration supplier.php, puis instancier l’objet via la méthode Container::pull(). Enfin, enregistrez simplement le conteneur dans le fichier d'entrée.

Cette méthode d'utilisation des conteneurs peut aider les développeurs à gérer les dépendances entre les classes de manière plus standardisée et flexible, et à améliorer la réutilisabilité et la maintenabilité du code. Je pense qu'en étudiant cet article, les lecteurs comprendront mieux l'utilisation des conteneurs ThinkPHP6.

Code référence :

<?php
// 容器配置文件config/provider.php

return [
    'demo'    => [
        ppdemoDemo::class,
        ['example'],
        true,
    ],
];

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn