Inversão de controle em php

Inversão de controle em php
A inversão do controle (COI) define a maneira como os objetos são usados, mas não especifica como criá -los. O COI define a relação entre a classe de alto nível e a classe de detalhes, onde a classe de alto nível depende da classe de detalhes. As classes de alto e baixo nível estão relacionadas abstraindo uma aula de detalhes no COI. Neste tutorial, explicamos como implementar o IOC no PHP.

Exemplo 1: Implementar o COI usando a função do método

Para acompanhar este exemplo, crie um arquivo php com o seguinte script. Aqui, a Classa depende de Classb e ClassC. Se Classb ou ClassC forem modificados, a Classe será afetada. Se Classb e ClassC forem desenvolvidos por diferentes programadores, um problema de dependência surgirá. Este problema pode ser resolvido por COI. No script, duas variáveis ​​são declaradas como as variáveis ​​de objetos de Classb e Classc. Quando o método() A função da classe é chamada, então $ Classb e $ Classc serão inicializados e o método() Funções de Classb e ClassC serão chamadas.

// Defina Classa
Classe de classe

Public $ Classb;
Public $ Classc;
Função pública Classa ()

eco "

Inicialização da Clasa

";

Método da função pública ()

$ this-> classB = new ClassB ();
$ this-> classc = new Classc ();
$ this-> ClassB-> Method ();
$ this-> Classc-> método ();


// Defina ClassB
Classe Classb

Função pública ClassB ()

eco "

Inicialização de Classb

";

Método da função pública ()

eco "

A saída de Classb

";


// Definir classe
Classe Classc

Função pública Classc ()

eco "

Inicialização do ClassC

";

Método da função pública ()

eco "

A saída da classe

";


// Crie objeto de classe
$ object = new Classa ();
// Chame a função Method ()
$ object-> método ();
?>

Saída:

A saída a seguir será produzida executando o script acima do servidor da web. Aqui, o construtor das três classes é chamado quando a Classa é criada. Em seguida, o método() As funções de Classb e Classc são chamadas para gerar a saída.

Exemplo 2: Implementar o COI usando construtores

Para seguir este exemplo, crie um arquivo php com o seguinte script. Aqui, o construtor de Classa depende de Classb e ClassC. Classb e Classc são passados ​​como argumentos para o construtor da Classa. Classb e Classc serão criados fora da Classa. Portanto, se alguma coisa for modificada em Classb ou Classc, nenhuma alteração será necessária na Classe. Uma mensagem de texto formatada será impressa no construtor de Classb e ClassC. As funções do método () de Classb e ClassC são chamadas do método() função da classe.

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

Método da função pública ()

$ this-> ClassB-> Method ();
$ this-> Classc-> método ();


// Defina ClassB
Classe Classb

Função pública ClassB ()

eco "

Inicialização de Classb

";

Método da função pública ()

eco "

A saída de Classb

";


// Definir classe
Classe Classc

Função pública Classc ()

eco "

Inicialização do ClassC

";

Método da função pública ()

eco "

A saída da classe

";


// Crie objeto de classe
$ object = new Classa (new ClassB (), new Classc ());
// Chame a função Method ()
$ object-> método ();
?>

Saída:

A saída a seguir será produzida executando o script acima do servidor da web. Aqui, as duas primeiras linhas da saída foram geradas a partir do construtor de Classb e Classc. Então o método() Funções de Classb e Classc foram chamadas e a saída foi gerada.

Exemplo 3: Implementar o COI usando a herança

Para seguir este exemplo, crie um arquivo php com o seguinte script. Aqui, Classa e Classb não estão relacionados, e ChildClass1 e ChildClass2 herdam Classb. O construtor da Classa toma o objeto de outra classe como argumento e inicializa a variável de classe, $ Class_OBJ. Esta variável de classe é usada para chamar o método() função do objeto de classe que é usado no construtor da classe.

Class_OBJ = $ obj;

Método da função pública ()

$ this-> class_obj-> method ();


// Defina ClassB
Classe Classb

Método da função pública ()

eco "

A saída de Classb

";


// Defina ChildClass1
Classe ChildClass1 estende Classb

Método da função pública ()

eco "

A saída da CLASSCLASS1

";


// Defina ChildClass2
Classe ChildClass2 estende Classb

Método da função pública ()

eco "

A saída da Criança Child2

";


// Crie o objeto de Classa
$ object = new Classa (novo ChildClass1 ());
// Chame a função Method ()
$ object-> método ();
?>

Saída:

A saída a seguir será produzida executando o script acima do servidor da web. O objeto de Criança Child foi aprovado como um argumento ao criar Classa, que é uma classe infantil de Classb. Aqui, não é necessário saber de qual classe ChildClass1 é herdada. Depois de inicializar a Classa, a variável de classe $ classe_obj chamou método() Função do ChildClass1 e imprimiu o texto como saída.

Conclusão

O COI é um conceito avançado de programação orientado a objetos. Neste tutorial, mostramos como implementar o COI no PHP usando alguns exemplos simples.