Inwersja kontroli w PHP

Inwersja kontroli w PHP
Inwersja kontroli (IOC) określa sposób, w jaki używane są obiekty, ale nie określa, jak je utworzyć. MKOl określa związek między klasą wysokiego poziomu a klasą szczegółów, w której klasa wysokiego poziomu zależy od klasy szczegółowości. Zajęcia wysokiego i niskiego poziomu są powiązane poprzez wyodrębnienie klasy szczegółowych w MKOl. W tym samouczku wyjaśniamy, jak wdrożyć MKOl w PHP.

Przykład 1: Wdrożenie MKOC za pomocą funkcji metody

Aby śledzić ten przykład, utwórz plik PHP z następującym skryptem. Tutaj Classa zależy od klasyb i klasyc. Jeśli classB lub classc zostaną zmodyfikowane, wpłynie to na klasę. Jeśli ClassB i Classc są opracowywane przez różnych programistów, pojawi się problem zależności. Ten problem może zostać rozwiązany przez MKOl. W skrypcie deklarowane są dwie zmienne działające jako zmienne obiektowe klasyb i klasę. Kiedy metoda() Funkcja Classa jest wywoływana, a następnie $ classb i $ classc zostaną zainicjowane, a metoda() Funkcje klasyb i klasyc zostaną wywołane.

// Zdefiniuj Classa
klasa classa

public $ classB;
public $ classc;
funkcja publiczna classa ()

Echo "

Inicjalizacja Classa

";

Metoda funkcji publicznej ()

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


// Zdefiniuj klasę
klasa klas

Funkcja publiczna klasa ()

Echo "

Inicjalizacja klasyb

";

Metoda funkcji publicznej ()

Echo "

Wyjście z klasyb

";


// Zdefiniuj klasę
klasa klasa

Funkcja publiczna klasa ()

Echo "

Inicjalizacja klasyc

";

Metoda funkcji publicznej ()

Echo "

Wyjście z Classc

";


// Utwórz obiekt Classa
$ obiekt = new classa ();
// wywołać funkcję metody ()
$ object-> Method ();
?>

Wyjście:

Poniższe dane wyjściowe zostaną wyprodukowane przez uruchomienie powyższego skryptu z serwera internetowego. Tutaj konstruktor trzech klas jest wywoływany po tworzeniu Classa. Następnie metoda() Funkcje klasyb i klasyc są wywoływane w celu wygenerowania danych wyjściowych.

Przykład 2: Wdrożenie MKOC przy użyciu konstruktorów

Aby śledzić ten przykład, utwórz plik PHP z następującym skryptem. Tutaj konstruktor Classa zależy od klasyb i klasyc. ClassB i Classc są przekazywane jako argumenty konstruktorowi Classa. ClassB i Classc zostaną utworzone poza klasą. Dlatego, jeśli cokolwiek jest modyfikowane w klasieb lub klasiec, wówczas nie są wymagane zmiany w Classa. Sformatowana wiadomość tekstowa zostanie wydrukowana z konstruktora klasyb i klasyc. Method () funkcje klasyb i klasyc są wywoływane z metoda() Funkcja Classa.

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

Metoda funkcji publicznej ()

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


// Zdefiniuj klasę
klasa klas

Funkcja publiczna klasa ()

Echo "

Inicjalizacja klasyb

";

Metoda funkcji publicznej ()

Echo "

Wyjście z klasyb

";


// Zdefiniuj klasę
klasa klasa

Funkcja publiczna klasa ()

Echo "

Inicjalizacja klasyc

";

Metoda funkcji publicznej ()

Echo "

Wyjście z Classc

";


// Utwórz obiekt Classa
$ obiekt = new Classa (new classB (), new classc ());
// wywołać funkcję metody ()
$ object-> Method ();
?>

Wyjście:

Poniższe dane wyjściowe zostaną wyprodukowane przez uruchomienie powyższego skryptu z serwera internetowego. Tutaj dwie pierwsze linie w wyjściu zostały wygenerowane z konstruktora klasyb i klasyc. A później metoda() Wywołano funkcje klasyb i klasyc, a wyjście wygenerowano.

Przykład 3: Wdrożenie IOC za pomocą dziedzictwa

Aby śledzić ten przykład, utwórz plik PHP z następującym skryptem. Tutaj Classa i ClassB są niezwiązane, a Childclass1 i Childclass2 dziedziczy klasa. Konstruktor Classa przyjmuje obiekt innej klasy jako argument i inicjuje zmienną klasową, $ class_obj. Ta zmienna klasowa służy do wywołania metoda() funkcja obiektu klasy, która jest używana w konstruktorze klasycznym.

Class_obj = $ obj;

Metoda funkcji publicznej ()

$ this-> class_obj-> metoda ();


// Zdefiniuj klasę
klasa klas

Metoda funkcji publicznej ()

Echo "

Wyjście z klasyb

";


// Zdefiniuj Childclass1
klasa Childclass1 rozszerza klasęb

Metoda funkcji publicznej ()

Echo "

Wyjście z Childclass1

";


// Zdefiniuj Childclass2
klasa childclass2 rozszerza klasęb

Metoda funkcji publicznej ()

Echo "

Wyjście z Childclass2

";


// Utwórz obiekt Classa
$ obiekt = new Classa (new ChildClass1 ());
// wywołać funkcję metody ()
$ object-> Method ();
?>

Wyjście:

Poniższe dane wyjściowe zostaną wyprodukowane przez uruchomienie powyższego skryptu z serwera internetowego. Obiekt ChildClass1 został przekazany jako argument podczas tworzenia klasy, która jest klasą klasyb. W tym przypadku nie trzeba wiedzieć, z której klasy Childclass1 jest dziedziczony. Po zainicjowaniu Classa zmienna klasy $ class_obj nazywała metoda() Funkcja ChildClass1 i wydrukowała tekst jako wyjście.

Wniosek

MKOl to zaawansowana koncepcja programowania obiektowego. W tym samouczku pokazaliśmy, jak wdrożyć MKOl w PHP, używając kilku prostych przykładów.