Inversione del controllo in PHP

Inversione del controllo in PHP
L'inversione del controllo (IOC) definisce il modo in cui gli oggetti vengono utilizzati, ma non specifica come crearli. Il IOC definisce la relazione tra la classe di alto livello e la classe di dettaglio, in cui la classe di alto livello dipende dalla classe di dettaglio. Le classi di alto e basso livello sono correlate astrattendo una classe di dettaglio nel CIO. In questo tutorial, spieghiamo come implementare il CIO in PHP.

Esempio 1: implementare il IOC utilizzando la funzione Metodo

Per seguire questo esempio, crea un file PHP con il seguente script. Qui, Classa dipende da ClassB e Classc. Se Classb o Classc sono modificati, allora Classe sarà interessata. Se ClassB e ClassC sono sviluppati da diversi programmatori, sorgerà un problema di dipendenza. Questo problema può essere risolto da IOC. Nella sceneggiatura, sono dichiarate due variabili che fungono da variabili oggetto di ClassB e ClassC. Quando il metodo() La funzione di Classa viene chiamata, quindi $ classb e $ classc saranno inizializzati e il metodo() Le funzioni di ClassB e Classc verranno chiamate.

// Definisci Classa
Classe Classa

pubblico $ classb;
pubblico $ classc;
Funzione pubblica classA ()

eco "

Inizializzazione di Classa

";

Metodo della funzione pubblica ()

$ this-> classb = new classB ();
$ this-> classc = new classc ();
$ this-> classB-> Method ();
$ this-> classc-> Method ();


// Definisci ClassB
Classe ClassB

funzione pubblica classB ()

eco "

Inizializzazione di ClassB

";

Metodo della funzione pubblica ()

eco "

L'output da ClassB

";


// Defini Classc
Classe Classc

funzione pubblica classc ()

eco "

Inizializzazione di ClassC

";

Metodo della funzione pubblica ()

eco "

L'output da ClassC

";


// Crea oggetto di Classa
$ object = new clala ();
// Chiama la funzione Method ()
$ oggetto-> metodo ();
?>

Produzione:

Il seguente output verrà prodotto eseguendo lo script sopra dal server web. Qui, il costruttore delle tre classi viene chiamato quando viene creata Classa. Successivamente, il metodo() Le funzioni di ClassB e Classc sono chiamate per generare l'output.

Esempio 2: implementare il CIO usando i costruttori

Per seguire questo esempio, crea un file PHP con il seguente script. Qui, il costruttore di Classa dipende da ClassB e Classc. ClassB e Classc sono passati come argomenti al costruttore di ClassA. ClassB e Classc saranno creati al di fuori di Classa. Pertanto, se qualcosa viene modificato in ClassB o ClassC, allora non sono richieste modifiche in ClassA. Un messaggio di testo formattato verrà stampato dal costruttore di ClassB e ClassC. Le funzioni metodiche () di classb e classc sono chiamate da metodo() funzione di Classa.

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

Metodo della funzione pubblica ()

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


// Definisci ClassB
Classe ClassB

funzione pubblica classb ()

eco "

Inizializzazione di ClassB

";

Metodo della funzione pubblica ()

eco "

L'output da ClassB

";


// Defini Classc
Classe Classc

funzione pubblica classc ()

eco "

Inizializzazione di ClassC

";

Metodo della funzione pubblica ()

eco "

L'output da ClassC

";


// Crea oggetto di Classa
$ object = new ClassA (new classB (), new classc ());
// Chiama la funzione Method ()
$ oggetto-> metodo ();
?>

Produzione:

Il seguente output verrà prodotto eseguendo lo script sopra dal server web. Qui, le prime due righe nell'uscita sono state generate dal costruttore di ClassB e ClassC. Poi il metodo() Sono state chiamate funzioni di ClassB e Classc e l'output è stato generato.

Esempio 3: implementare il CIO usando l'eredità

Per seguire questo esempio, crea un file PHP con il seguente script. Qui, ClassA e ClassB non sono correlati e ChildClass1 e ChildClass2 ereditano ClassB. Il costruttore di Classa prende l'oggetto di un'altra classe come argomento e inizializza la variabile di classe, $ class_obj. Questa variabile di classe viene utilizzata per chiamare il metodo() funzione dell'oggetto di classe che viene utilizzato nel costruttore di Classa.

Class_obj = $ obj;

Metodo della funzione pubblica ()

$ this-> class_obj-> Method ();


// Definisci ClassB
Classe ClassB

Metodo della funzione pubblica ()

eco "

L'output da ClassB

";


// Definisci ChildClass1
Class ChildClass1 estende ClassB

Metodo della funzione pubblica ()

eco "

L'output da Childclass1

";


// Definisci ChildClass2
Class ChildClass2 estende ClassB

Metodo della funzione pubblica ()

eco "

L'output da ChildClass2

";


// Crea l'oggetto di Classa
$ object = new Classa (new ChildClass1 ());
// Chiama la funzione Method ()
$ oggetto-> metodo ();
?>

Produzione:

Il seguente output verrà prodotto eseguendo lo script sopra dal server web. L'oggetto di ChildClass1 è stato approvato come argomento durante la creazione di Classa, che è una classe di ClassB. Qui, non è necessario sapere da quale classe è ereditato da Childclass1. Dopo aver inizializzato Classa, la variabile di classe $ class_obj ha chiamato il metodo() funzione di ChildClass1 e stampato il testo come output.

Conclusione

Il IOC è un concetto di programmazione orientata all'oggetto avanzato. In questo tutorial, ti abbiamo mostrato come implementare il CIO in PHP usando alcuni esempi semplici.