Inversjon av kontroll i PHP

Inversjon av kontroll i PHP
Inversjon av kontroll (IOC) definerer måten objekter brukes på, men det spesifiserer ikke hvordan du oppretter dem. IOC definerer forholdet mellom klassen på høyt nivå og detaljklasse, der klassen på høyt nivå avhenger av detaljklassen. Klasser på høyt og lavt nivå er relatert ved å abstrahere en detaljklasse i IOC. I denne opplæringen forklarer vi hvordan vi implementerer IOC i PHP.

Eksempel 1: Implementere IOC ved hjelp av metodefunksjonen

For å følge med dette eksemplet, oppretter du en PHP -fil med følgende skript. Her er Classa avhengig av Classb og Classc. Hvis Classb eller Classc er endret, vil Classa bli berørt. Hvis Classb og Classc er utviklet av forskjellige programmerere, vil det oppstå et avhengighetsproblem. Dette problemet kan løses av IOC. I skriptet er to variabler erklært å fungere som objektvariablene til Classb og Classc. Når metode() Funksjonen til Classa kalles, deretter vil $ Classb og $ Classc bli initialisert, og metode() Funksjoner av Classb og Classc vil bli kalt.

// definere classa
Klasseklasse

offentlig $ Classb;
public $ classc;
offentlig funksjon Classa ()

ekko "

Initialisering av Classa

";

Offentlig funksjonsmetode ()

$ this-> classb = new Classb ();
$ this-> classc = new Classc ();
$ this-> classb-> metode ();
$ this-> classc-> metode ();


// definere klasseb
Klasseklasse

offentlig funksjon Classb ()

ekko "

Initialisering av klasseb

";

Offentlig funksjonsmetode ()

ekko "

Utgangen fra Classb

";


// definere classc
Klasseklasse

offentlig funksjon Classc ()

ekko "

Initialisering av Classc

";

Offentlig funksjonsmetode ()

ekko "

Utgangen fra Classc

";


// Lag gjenstand for Classa
$ objekt = new Classa ();
// Ring metoden () -funksjonen
$ objekt-> metode ();
?>

Produksjon:

Følgende utdata vil bli produsert ved å kjøre skriptet ovenfor fra webserveren. Her kalles konstruktøren av de tre klassene når Classa er opprettet. Neste, The metode() Funksjoner av Classb og Classc kalles for å generere utgangen.

Eksempel 2: Implementere IOC ved hjelp av konstruktører

For å følge dette eksemplet, oppretter du en PHP -fil med følgende skript. Her avhenger konstruktøren av Classa av Classb og Classc. Classb og Classc sendes som argumenter til konstruktøren av Classa. Classb og Classc vil bli opprettet utenfor Classa. Derfor, hvis noe er endret i Classb eller Classc, kreves det ingen endringer i Classa. En formatert tekstmelding vil bli skrevet ut fra konstruktøren til Classb og Classc. Metode () -funksjonene til Classb og Classc kalles fra metode() Funksjon av Classa.

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

Offentlig funksjonsmetode ()

$ this-> classb-> metode ();
$ this-> classc-> metode ();


// definere klasseb
Klasseklasse

offentlig funksjon Classb ()

ekko "

Initialisering av klasseb

";

Offentlig funksjonsmetode ()

ekko "

Utgangen fra Classb

";


// definere classc
Klasseklasse

offentlig funksjon Classc ()

ekko "

Initialisering av Classc

";

Offentlig funksjonsmetode ()

ekko "

Utgangen fra Classc

";


// Lag gjenstand for Classa
$ objekt = new Classa (new Classb (), new classc ());
// Ring metoden () -funksjonen
$ objekt-> metode ();
?>

Produksjon:

Følgende utdata vil bli produsert ved å kjøre skriptet ovenfor fra webserveren. Her ble de to første linjene i utgangen generert fra konstruktøren til Classb og Classc. Og så metode() Funksjoner av Classb og Classc ble kalt, og utgangen ble generert.

Eksempel 3: Implementere IOC ved hjelp av arv

For å følge dette eksemplet, oppretter du en PHP -fil med følgende skript. Her er Classa og Classb ikke relatert, og Childclass1 og Childclass2 arver Classb. Konstruktøren av Classa tar gjenstand for en annen klasse som et argument og initialiserer klassevariabelen, $ class_obj. Denne klassevariabelen brukes til å ringe metode() Funksjonen til klasseobjektet som brukes i konstruktøren til Classa.

Class_obj = $ obj;

Offentlig funksjonsmetode ()

$ this-> class_obj-> metode ();


// definere klasseb
Klasseklasse

Offentlig funksjonsmetode ()

ekko "

Utgangen fra Classb

";


// Definer Childclass1
Klassen Childclass1 utvider Classb

Offentlig funksjonsmetode ()

ekko "

Produksjonen fra Childclass1

";


// Definer Childclass2
Class Childclass2 utvider Classb

Offentlig funksjonsmetode ()

ekko "

Produksjonen fra Childclass2

";


// Lag gjenstanden til Classa
$ objekt = new Classa (New Childclass1 ());
// Ring metoden () -funksjonen
$ objekt-> metode ();
?>

Produksjon:

Følgende utdata vil bli produsert ved å kjøre skriptet ovenfor fra webserveren. Formålet med Childclass1 ble gitt som et argument når du opprettet Classa, som er en barneklasse i Classb. Her er det ikke nødvendig å vite fra hvilken klasse Childclass1 er arvet. Etter å ha initialisert Classa, ringte klassevariabelen $ class_obj metode() Funksjonen til Childclass1 og trykte teksten som utgang.

Konklusjon

IOC er et avansert objektorientert programmeringskonsept. I denne opplæringen viste vi deg hvordan du implementerer IOC i PHP ved å bruke noen enkle eksempler.