Kontrollinversion in PHP

Kontrollinversion in PHP
Die Inversion der Kontrollinversion (IOC) definiert die Art und Weise, wie Objekte verwendet werden, aber es gibt nicht an, wie sie erstellt werden sollen. IOC definiert die Beziehung zwischen der Klasse auf hoher Ebene und Detailklasse, in der die hochrangige Klasse von der Detailklasse abhängt. Hoch- und niedrige Klassen werden verwandt, indem eine Detailklasse in IOC abstrahiert wird. In diesem Tutorial erklären wir, wie IOC in PHP implementiert werden kann.

Beispiel 1: Implementieren Sie IOC mithilfe der Methodenfunktion

Um diesem Beispiel zu folgen, erstellen Sie eine PHP -Datei mit dem folgenden Skript. Hier hängt Classa von ClassB und Classc ab. Wenn klassische oder classc geändert werden, ist Classa betroffen. Wenn ClassB und Classc von verschiedenen Programmierern entwickelt werden, tritt ein Abhängigkeitsproblem auf. Dieses Problem kann durch gelöst werden IOC. Im Skript werden zwei Variablen als Objektvariablen von CLASSB und CLASSC deklariert, die als Objektvariablen fungieren. Wenn das Methode() Die Funktion von classa wird aufgerufen, dann werden $ classb und $ classc initialisiert und die Methode() Funktionen von ClassB und Classc werden aufgerufen.

// Klassea definieren
Klasse Classa

öffentlich $ classb;
öffentliche $ classc;
öffentliche Funktion classa ()

Echo "

Initialisierung der Klasse

";

öffentliche Funktionsmethode ()

$ this-> classB = new classB ();
$ this-> classc = new classc ();
$ this-> classB-> methode ();
$ this-> classc-> methode ();


// ClassB definieren
Klasse ClassB

öffentliche Funktion classb ()

Echo "

Initialisierung von ClassB

";

öffentliche Funktionsmethode ()

Echo "

Die Ausgabe von classB

";


// Classc definieren
Klassenklasse

öffentliche Funktion classc ()

Echo "

Initialisierung der Klassen

";

öffentliche Funktionsmethode ()

Echo "

Die Ausgabe von Classc

";


// Objekt von Classa erstellen
$ object = new classa ();
// Ruf die Funktion method () auf
$ object-> methode ();
?>

Ausgang:

Die folgende Ausgabe wird erstellt, indem das obige Skript vom Webserver ausgeführt wird. Hier wird der Konstruktor der drei Klassen aufgerufen, wenn Classa erstellt wird. Als nächstes die Methode() Funktionen von ClassB und Classc werden aufgerufen, um die Ausgabe zu generieren.

Beispiel 2: Implementieren Sie IOC mit Konstruktoren

Um diesem Beispiel zu befolgen, erstellen Sie eine PHP -Datei mit dem folgenden Skript. Hier hängt der Konstruktor der Classa von ClassB und Classc ab. ClassB und Classc werden als Argumente an den Konstruktor von Classa übergeben. ClassB und Classc werden außerhalb der Classa erstellt. Wenn also in ClassB oder ClassC etwas geändert wird, sind in Classa keine Änderungen erforderlich. Eine formatierte Textnachricht wird vom Konstruktor von ClassB und ClassC gedruckt. Die Methoden () -Funktionen von ClassB und Classc werden aus dem aufgerufen Methode() Funktion von Classa.

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

öffentliche Funktionsmethode ()

$ this-> classB-> methode ();
$ this-> classc-> methode ();


// ClassB definieren
Klasse ClassB

öffentliche Funktion classb ()

Echo "

Initialisierung von ClassB

";

öffentliche Funktionsmethode ()

Echo "

Die Ausgabe von classB

";


// Classc definieren
Klassenklasse

öffentliche Funktion classc ()

Echo "

Initialisierung der Klassen

";

öffentliche Funktionsmethode ()

Echo "

Die Ausgabe von Classc

";


// Objekt von Classa erstellen
$ object = new classa (new classB (), new classc ());
// Ruf die Funktion method () auf
$ object-> methode ();
?>

Ausgang:

Die folgende Ausgabe wird erstellt, indem das obige Skript vom Webserver ausgeführt wird. Hier wurden die ersten beiden Zeilen in der Ausgabe aus dem Konstruktor von CLASSB und CLASSC generiert. Dann ist die Methode() Funktionen von ClassB und Classc wurden aufgerufen und die Ausgabe wurde generiert.

Beispiel 3: Implementieren Sie IOC mithilfe der Vererbung

Um diesem Beispiel zu befolgen, erstellen Sie eine PHP -Datei mit dem folgenden Skript. Hier sind Classa und ClassB nicht verwandt, und ChildClass1 und ChildClass2 erben classB. Der Konstruktor von Classa nimmt das Objekt einer anderen Klasse als Argument an und initialisiert die Klassenvariable $ class_obj. Diese Klassenvariable wird verwendet, um die aufzurufen Methode() Funktion des Klassenobjekts, das im Konstruktor von Classa verwendet wird.

Class_obj = $ obj;

öffentliche Funktionsmethode ()

$ this-> class_obj-> methode ();


// ClassB definieren
Klasse ClassB

öffentliche Funktionsmethode ()

Echo "

Die Ausgabe von classB

";


// Kinderklasse definieren1
Klasse ChildClass1 erweitert ClassB

öffentliche Funktionsmethode ()

Echo "

Die Ausgabe von ChildClass1

";


// Kinderklasse definieren2
Klasse ChildClass2 erweitert ClassB

öffentliche Funktionsmethode ()

Echo "

Die Ausgabe von ChildClass2

";


// Erstellen Sie das Objekt von Classa
$ object = new classa (new ChildClass1 ());
// Ruf die Funktion method () auf
$ object-> methode ();
?>

Ausgang:

Die folgende Ausgabe wird erstellt, indem das obige Skript vom Webserver ausgeführt wird. Das Objekt von ChildClass1 wurde als Argument beim Erstellen von Classa übergeben, bei der es sich um eine untergeordnete Klasse von ClassB handelt. Hier ist es nicht notwendig zu wissen. Nach der Initialisierung von Classa nannte die Klassenvariable $ class_obj die Methode() Funktion von ChildClass1 und druckte den Text als Ausgabe aus.

Abschluss

IOC ist ein fortschrittliches objektorientiertes Programmierkonzept. In diesem Tutorial haben wir Ihnen gezeigt, wie Sie IOC in PHP implementieren, indem Sie einige einfache Beispiele verwenden.