Inversion du contrôle en php

Inversion du contrôle en php
L'inversion du contrôle (CIO) définit la façon dont les objets sont utilisés, mais il ne spécifie pas comment les créer. Le CIO définit la relation entre la classe de haut niveau et la classe de détail, où la classe de haut niveau dépend de la classe de détail. Les classes de haut et de bas niveau sont liées en abstraction d'une classe de détail en IOC. Dans ce tutoriel, nous expliquons comment implémenter le CIO dans PHP.

Exemple 1: Implémentez le CIO en utilisant la fonction de méthode

Pour suivre cet exemple, créez un fichier PHP avec le script suivant. Ici, classa dépend de classb et classc. Si ClassB ou CLASSC sont modifiés, alors Classa sera affecté. Si ClassB et CLASSC sont développés par différents programmeurs, alors un problème de dépendance se pose. Ce problème peut être résolu par CIO. Dans le script, deux variables sont déclarées comme les variables d'objet de ClassB et ClassC. Quand le méthode() La fonction de classa est appelée, alors $ classb et $ classc seront initialisés, et le méthode() Les fonctions de classb et classc seront appelées.

// définir la classe
classe classa

public $ classb;
public $ classc;
fonction publique classa ()

écho "

Initialisation de Classa

"

Méthode de la fonction publique ()

$ this-> classb = new classb ();
$ this-> classc = new classc ();
$ this-> classb-> méthode ();
$ this-> classc-> méthode ();


// Définir la classeB
classe ClassB

fonction publique classb ()

écho "

Initialisation de ClassB

"

Méthode de la fonction publique ()

écho "

La sortie de classb

"


// définir la classe
classe de classe

fonction publique classc ()

écho "

Initialisation de la classe

"

Méthode de la fonction publique ()

écho "

La sortie de Classc

"


// Créer un objet de classe
$ object = new classa ();
// appelle la fonction méthode ()
$ objet-> méthode ();
?>

Sortir:

La sortie suivante sera produite en exécutant le script ci-dessus à partir du serveur Web. Ici, le constructeur des trois classes est appelé lorsque Classa est créé. Ensuite, le méthode() Les fonctions de ClassB et ClassC sont appelées pour générer la sortie.

Exemple 2: Implémentez le CIO à l'aide de constructeurs

Pour suivre cet exemple, créez un fichier PHP avec le script suivant. Ici, le constructeur de Classa dépend de ClassB et Classc. ClassB et ClassC sont passés comme arguments au constructeur de Classa. ClassB et CLASSC seront créés en dehors de Classa. Par conséquent, si quelque chose est modifié dans CLASSB ou CLASSC, alors aucune modification n'est requise dans Classa. Un message texte formaté sera imprimé à partir du constructeur de classb et classc. Les fonctions méthode () de classb et classc sont appelées à partir du méthode() Fonction de Classa.

Classb = $ b;
$ this-> classc = $ c;

Méthode de la fonction publique ()

$ this-> classb-> méthode ();
$ this-> classc-> méthode ();


// Définir la classeB
classe ClassB

fonction publique classb ()

écho "

Initialisation de ClassB

"

Méthode de la fonction publique ()

écho "

La sortie de classb

"


// définir la classe
classe de classe

fonction publique classc ()

écho "

Initialisation de la classe

"

Méthode de la fonction publique ()

écho "

La sortie de Classc

"


// Créer un objet de classe
$ object = new classa (new classb (), new classc ());
// appelle la fonction méthode ()
$ objet-> méthode ();
?>

Sortir:

La sortie suivante sera produite en exécutant le script ci-dessus à partir du serveur Web. Ici, les deux premières lignes de la sortie ont été générées à partir du constructeur de ClassB et ClassC. Puis le méthode() Les fonctions de CLASSB et CLASSC ont été appelées, et la sortie a été générée.

Exemple 3: Implémentez le CIO en utilisant l'héritage

Pour suivre cet exemple, créez un fichier PHP avec le script suivant. Ici, Classa et ClassB ne sont pas liés, et la classe d'enfants1 et la classe d'enfants 2 héritent ClassB. Le constructeur de Classa prend l'objet d'une autre classe comme argument et initialise la variable de classe, $ class_obj. Cette variable de classe est utilisée pour appeler le méthode() Fonction de l'objet de classe utilisé dans le constructeur de Classa.

Class_obj = $ obj;

Méthode de la fonction publique ()

$ this-> class_obj-> méthode ();


// Définir la classeB
classe ClassB

Méthode de la fonction publique ()

écho "

La sortie de classb

"


// Définir la classe d'enfants1
classe de classe Class1 étend ClassB

Méthode de la fonction publique ()

écho "

La sortie de la classe d'enfants1

"


// Définir la classe d'enfants2
classe de classe Classe2 étend ClassB

Méthode de la fonction publique ()

écho "

La sortie de la classe d'enfants2

"


// Créez l'objet de classa
$ object = new Classa (new Childclass1 ());
// appelle la fonction méthode ()
$ objet-> méthode ();
?>

Sortir:

La sortie suivante sera produite en exécutant le script ci-dessus à partir du serveur Web. L'objet de la classe d'enfants1 a été passé comme un argument lors de la création de classa, qui est une classe d'enfants de Classb. Ici, il n'est pas nécessaire de savoir à partir de quelle classe de classe d'enfants 1 est héritée. Après avoir initialisé Classa, la variable de classe $ class_obj a appelé le méthode() fonction de la classe d'enfants1 et imprimé le texte en sortie.

Conclusion

IOC est un concept de programmation avancé orienté objet. Dans ce tutoriel, nous vous avons montré comment implémenter le CIO en PHP en utilisant quelques exemples simples.