Inversión de control en PHP

Inversión de control en PHP
La inversión de control (COI) define la forma en que se usan los objetos, pero no especifica cómo crearlos. El COI define la relación entre la clase de alto nivel y la clase de detalle, donde la clase de alto nivel depende de la clase de detalle. Las clases de alto y bajo nivel se relacionan abstraiendo una clase de detalle en el COI. En este tutorial, explicamos cómo implementar el COI en PHP.

Ejemplo 1: Implementar el COI utilizando la función de método

Para seguir con este ejemplo, cree un archivo PHP con el siguiente script. Aquí, ClassA depende de ClassB y ClassC. Si se modifican ClassB o ClassC, entonces ClassA se verá afectado. Si ClassB y ClassC son desarrollados por diferentes programadores, entonces surgirá un problema de dependencia. Este problema se puede resolver por COI. En el script, se declaran que dos variables actúan como las variables de objeto de classb y classc. Cuando el método() Se llama a la función de ClassA, entonces $ ClassB y $ ClassC se inicializarán y el método() Las funciones de ClassB y ClassC se llamarán.

// Definir clase
clase de clase

público $ classb;
público $ classc;
Función pública ClassA ()

eco "

Inicialización de ClassA

";

Método de función pública ()

$ this-> classb = new ClassB ();
$ this-> classc = new classC ();
$ this-> classb-> método ();
$ this-> classc-> método ();


// Definir classb
clase ClassB

Función pública ClassB ()

eco "

Inicialización de ClassB

";

Método de función pública ()

eco "

La salida de ClassB

";


// Definir classc
classc de clase

función pública classc ()

eco "

Inicialización de classc

";

Método de función pública ()

eco "

La salida de classc

";


// Crear objeto de clase
$ object = new ClassA ();
// llamar a la función de método ()
$ objeto-> método ();
?>

Producción:

La siguiente salida se producirá ejecutando el script anterior desde el servidor web. Aquí, el constructor de las tres clases se llama cuando se crea ClassA. A continuación, el método() Las funciones de classb y classc están llamadas a generar la salida.

Ejemplo 2: Implementar el COI usando constructores

Para seguir este ejemplo, cree un archivo PHP con el siguiente script. Aquí, el constructor de ClassA depende de ClassB y ClassC. ClassB y ClassC se pasan como argumentos al constructor de ClassA. ClassB y ClassC se crearán fuera de ClassA. Por lo tanto, si algo se modifica en ClassB o ClassC, entonces no se requieren cambios en ClassA. Se imprimirá un mensaje de texto formateado desde el constructor de classb y classc. Las funciones de método () de ClassB y ClassC se llaman desde el método() función de clase.

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

Método de función pública ()

$ this-> classb-> método ();
$ this-> classc-> método ();


// Definir classb
clase ClassB

Función pública ClassB ()

eco "

Inicialización de ClassB

";

Método de función pública ()

eco "

La salida de ClassB

";


// Definir classc
classc de clase

función pública classc ()

eco "

Inicialización de classc

";

Método de función pública ()

eco "

La salida de classc

";


// Crear objeto de clase
$ object = new ClassA (new ClassB (), new ClassC ());
// llamar a la función de método ()
$ objeto-> método ();
?>

Producción:

La siguiente salida se producirá ejecutando el script anterior desde el servidor web. Aquí, las dos primeras líneas en la salida se generaron a partir del constructor de ClassB y ClassC. Entonces el método() Se llamaron funciones de classb y classc, y se generó la salida.

Ejemplo 3: Implementar el COI utilizando la herencia

Para seguir este ejemplo, cree un archivo PHP con el siguiente script. Aquí, ClassA y ClassB no están relacionados, y ChildClass1 y ChildClass2 heredan ClassB. El constructor de ClassA toma el objeto de otra clase como argumento e inicializa la variable de clase, $ class_obj. Esta variable de clase se usa para llamar al método() función del objeto de clase que se usa en el constructor de ClassA.

Class_obj = $ obj;

Método de función pública ()

$ this-> class_obj-> método ();


// Definir classb
clase ClassB

Método de función pública ()

eco "

La salida de ClassB

";


// Defina ChildClass1
Class ChildClass1 extiende ClassB

Método de función pública ()

eco "

La salida de ChildClass1

";


// Defina ChildClass2
Class ChildClass2 extiende ClassB

Método de función pública ()

eco "

La salida de ChildClass2

";


// Crear el objeto de ClassA
$ object = new ClassA (new ChildClass1 ());
// llamar a la función de método ()
$ objeto-> método ();
?>

Producción:

La siguiente salida se producirá ejecutando el script anterior desde el servidor web. El objeto de ChildClass1 se aprobó como un argumento al crear ClassA, que es una clase infantil de ClassB. Aquí, no es necesario saber de qué clase se hereda el childClass1. Después de inicializar ClassA, la variable de clase $ class_obj llamó al método() función de ChildClass1 e imprimió el texto como salida.

Conclusión

El COI es un concepto avanzado de programación orientado a objetos. En este tutorial, le mostramos cómo implementar el COI en PHP utilizando algunos ejemplos simples.