Cet article vous apporte des connaissances pertinentes sur PHP, qui présente principalement les problèmes liés à l'injection de dépendances, notamment ce qu'est l'injection de dépendances, les raisons de l'injection de dépendances et l'application de l'injection de dépendances, etc. J'espère qu'il sera utile à tout le monde . aide.
Étude recommandée : "Tutoriel vidéo PHP"
Comprenez l'injection de dépendances PHP dans cet article De nombreuses personnes entendront le terme injection de dépendances après avoir appris PHP pendant un certain temps, mais elles n'en ont que peu. compréhension. Dans mon cas, comprenez que l'injection de dépendances est en fait un modèle de conception de programmation PHP. Bien qu'elle ne soit pas classée comme un modèle de conception, l'existence de modèles de conception existe pour l'efficacité de la programmation, et bien sûr de l'injection de dépendances.
1. Qu'est-ce que l'injection de dépendances (DI)
- L'injection de dépendances (DI) fait en fait référence à l'injection automatique de dépendances sur une classe via le constructeur
- En termes simples, cela signifie que vous exploitez actuellement une classe , mais Certaines méthodes ou fonctions de cette classe ne peuvent pas être complétées par cette classe seule, mais doivent être complétées avec l'aide d'une autre classe. Le signe le plus direct est lorsque les données du paramètre sont transmises en tant qu'objet. À proprement parler, vous souhaitez faire fonctionner une autre classe dans une autre classe. Il existe une interdépendance entre les deux classes. La méthode de transmission des paramètres est appelée injection. La raison de l'injection de dépendances est au début. Si j'utilise une autre classe dans une classe, cela fonctionnera comme suit
- Par exemple, si je dois utiliser la classe adaptateur dans la classe conteneur, elle doit être instanciée avant utilisationS'il doit être utilisé Un grand nombre de ressources externes Les classes entraîneront un degré de couplage trop élevé, ce qui peut facilement entraîner des difficultés de maintenance ultérieures. En termes simples, le conteneur ne peut pas fonctionner sans classes externes. C'est ce qu'on appelle un degré de couplage trop élevé. Injection de dépendances simple
Le code ci-dessus est trop fortement couplé, ce qui conduit à l'émergence de l'injection de dépendances, principalement pour comprendre le couplage
Comme indiqué ci-dessous, il suffit de transmettre l'objet de classe qui doit être exploité.
- Les paramètres de l'opération d'injection de dépendances sont des objets, pas des paramètres ordinaires. Avez-vous une meilleure compréhension ?
- Mais une injection de dépendances aussi simple fera que si vous dépendez de plusieurs classes, cela vous prendra beaucoup de temps. passer les paramètres. Facile à confondre
<?php
class container
{
private $adapter;
public function __construct()
{
$this->adapter = new adapter();
}
}
Copier après la connexion
- 4. Injection de dépendances de haut niveau
Afin de résoudre le problème de confusion des paramètres ci-dessus, l'injection de dépendances a évolué à ce moment
Grâce à la méthode magique, __get sets l'objet
- Si la magie vous intéresse Si vous ne savez pas grand chose sur la méthode, merci de vous référer à mon article précédent : Explication détaillée des méthodes magiques en php
- À ce stade, nous pouvons résoudre le problème du trop grand nombre de dépendances et des paramètres déroutants
<?php
class container
{
private $adapter;
public function __construct(adapter $adapter)
{
$this->adapter = $adapter;
}
}
Copier après la connexion
- 5. Application de l'injection de dépendances
Définissons d'abord une classe conteneur, qui est principalement utilisée pour injecter les classes que vous souhaitez opérer dans le conteneur. Lors de son utilisation, il vous suffit de passer. l'objet conteneur. 6. Optimisation de haut niveau
- est ci-dessus Dans l'application, nous injectons directement les objets instanciés dans le conteneur
- Cela entraînera à nouveau l'instanciation de tous les objets avant qu'ils ne soient utilisés, entraînant une perte de ressources
- Nous pouvons passer la fermeture, afin que l'objet Il ne soit pas injecté par instanciation. Lorsque vous aurez besoin de l'utiliser, vous pouvez l'instancier à nouveau
- pour réduire la perte de ressources du serveur
<?php
class container
{
public $instance = [];
public function __set($name, $value)
{
$this->instance[$name] = $value;
}
}
$container = new container();
$container->adapter = new adapter();
Copier après la connexion
Apprentissage recommandé : "PHP. Tutoriel vidéo"
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!