Los constructores son funciones miembro especiales para la configuración inicial de instancias de objetos recién creadas a partir de una clase, que es la parte clave del concepto orientado a objetos en PHP5 .
Los constructores son los bloques de construcción muy básicos que definen el objeto futuro y su naturaleza. Puede decir que los constructores son los modelos para la creación de objetos que proporcionan valores para las funciones miembro y las variables miembro.
Una vez que se inicializa el objeto, se llama automáticamente al constructor. Los destructores son para destruir objetos y se llaman automáticamente al final de la ejecución.
En este artículo, vamos a aprender sobre conceptos orientados a objetos de constructores y destructores.
Ambas son funciones miembro especiales de cualquier clase con diferentes conceptos pero el mismo nombre excepto que los destructores están precedidos por un operador ~Tilda .
Sintaxis:
- __construir():
function __construct() { // initialize the object and its properties by assigning //values }
- __destruir():
function __destruct() { // destroying the object or clean up resources here }
Nota: El constructor se define en la sección pública de la Clase. Incluso los valores de las propiedades de la clase los establecen los constructores.
Tipos de constructores:
- Constructor predeterminado: no tiene parámetros, pero los valores al constructor predeterminado se pueden pasar dinámicamente.
- Constructor parametrizado: toma los parámetros y también puede pasar diferentes valores a los miembros de datos.
- Copy Constructor: Acepta la dirección de los demás objetos como parámetro.
Herencia: como la herencia es un concepto orientado a objetos, los constructores se heredan de la clase principal a la clase secundaria derivada de ella. Cada vez que la clase secundaria tiene un constructor y un destructor propios, estos se llaman en orden de prioridad o preferencia.
Constructor predeterminado predefinido: Al usar la función __construct(), puede definir un constructor.
Nota: En el caso de un constructor predefinido (__construct) y un constructor definido por el usuario en la misma clase, el constructor predefinido se convierte en constructor mientras que el constructor definido por el usuario se convierte en el método normal.
Programa:
php
<?PHP class Tree { function Tree() { echo "Its a User-defined Constructor of the class Tree"; } function __construct() { echo "Its a Pre-defined Constructor of the class Tree"; } } $obj= new Tree(); ?>
Producción:
Its a Pre-defined Constructor of the class Tree
Constructor parametrizado: El constructor de la clase acepta argumentos o parámetros.
El operador -> se utiliza para establecer el valor de las variables. En el método constructor, puede asignar valores a las variables durante la creación de objetos.
Programa:
php
<?php class Employee { Public $name; Public $position; function __construct($name,$position) { // This is initializing the class properties $this->name=$name; $this->profile=$position; } function show_details() { echo $this->name." : "; echo "Your position is ".$this->profile."\n"; } } $employee_obj= new Employee("Rakesh","developer"); $employee_obj->show_details(); $employee2= new Employee("Vikas","Manager"); $employee2->show_details(); ?>
Producción:
Rakesh : Your position is developer Vikas : Your position is Manager
Los constructores comienzan con dos guiones bajos y generalmente se ven como funciones normales de PHP. A veces, estos constructores se llaman funciones mágicas que comienzan con dos guiones bajos y con alguna funcionalidad adicional a los métodos normales. Después de crear un objeto de alguna clase que incluya un constructor, el contenido del constructor se ejecutará automáticamente.
Nota: si la clase de PHP tiene un constructor, en el momento de la creación del objeto, se llama al constructor de la clase. Los constructores no tienen tipo de devolución, por lo que no devuelven nada, ni siquiera vacío.
Ventajas de usar Constructores:
- Los constructores brindan la capacidad de pasar parámetros que son útiles en la inicialización automática de las variables miembro durante el tiempo de creación.
- Los Constructores pueden tener tantos parámetros como se requieran y se pueden definir con los argumentos por defecto.
- Fomentan la reutilización evitando la reinicialización cada vez que se crea una instancia de la clase.
- Puede iniciar la sesión en el método constructor para que no tenga que iniciar todas las funciones cada vez.
- Pueden llamar a los métodos y funciones de los miembros de la clase.
- Pueden llamar a otros Constructores incluso desde la clase Padres.
Nota: El método __construct() siempre tiene el factor de visibilidad pública.
Programa:
php
<?php class ParentClass { function __construct() { print "Parent class constructor.\n"; } } class ChildClass extends Parentclass { function __construct() { parent::__construct(); print "Child Class constructor"; } } $obj = new ParentClass(); $obj = new ChildClass(); ?>
Producción
Parent class constructor. Parent class constructor. Child Class constructor
Nota: Cada vez que se crea un objeto de clase secundaria, se llamará automáticamente al constructor de la subclase.
Destructor: Destructor también es una función miembro especial que es exactamente lo contrario del método constructor y se llama cuando una instancia de la clase se elimina de la memoria. Los destructores (__destruct ( void): void) son métodos que se llaman cuando no hay referencia a ningún objeto de la clase o sale del alcance o está a punto de liberarse explícitamente.
No tienen ningún tipo o valor de retorno. Simplemente se llama antes de desasignar memoria para un objeto o durante el final de la ejecución de scripts PHP o tan pronto como el control de ejecución abandona el bloque.
Los objetos globales se destruyen cuando finaliza el script o el código completo. La limpieza de recursos antes de la liberación de memoria o el cierre de archivos se lleva a cabo en el método destructor, siempre que ya no sean necesarios en el código. PHP Garbage Collector maneja la destrucción automática de objetos de clase.
~ ClassName() { }
Nota: El método destructor se llama cuando el código PHP se ejecuta completamente por su última línea usando las funciones PHP exit() o die() .
Programa:
php
<?php class SomeClass { function __construct() { echo "In constructor, "; $this->name = "Class object! "; } function __destruct() { echo "destroying " . $this->name . "\n"; } } $obj = new Someclass(); ?>
Producción:
In constructor, destroying Class object!
Nota: En el caso de la herencia, y si tanto la clase secundaria como la principal tienen destructores, primero se llama al destructor de la clase derivada y luego al destructor de la clase principal.
Ventajas de los destructores:
- Los destructores dan la oportunidad a los objetos de liberar la asignación de memoria, de modo que haya suficiente espacio disponible para nuevos objetos o liberar recursos para otras tareas.
- Efectivamente, hace que los programas se ejecuten de manera más eficiente y son muy útiles ya que realizan tareas de limpieza.
Comparación entre __constructores y __destructores:
Constructores | Destructores |
---|---|
Acepta uno o más argumentos. | No se pasan argumentos. Su vacío. |
el nombre de la función es _construct(). | el nombre de la función es _destruct() |
Tiene el mismo nombre que la clase. | Tiene el mismo nombre que la clase con el prefijo ~tilda. |
El constructor interviene automáticamente cuando se crea el objeto. | Destructor se involucra automáticamente cuando el objeto es destruido. |
Se utiliza para inicializar la instancia de una clase. | Se utiliza para desinicializar objetos ya existentes para liberar memoria para nuevos alojamientos. |
Se utiliza para inicializar miembros de datos de la clase. | Se utiliza para hacer que el objeto realice alguna tarea antes de que se destruya. |
Los constructores pueden estar sobrecargados. | Los destructores no se pueden sobrecargar. |
Se llama cada vez que se instancia una clase o se crea un objeto. | Se llama automáticamente en el momento de la eliminación del objeto. |
Asigna memoria. | Desasigna memoria. |
Pueden existir múltiples constructores en una clase. | Solo puede existir un Destructor en una clase. |
Si hay una clase derivada que hereda de la clase base y se crea el objeto de la clase derivada, se crea el constructor de la clase base y luego el constructor de la clase derivada. |
Se llama al destructor de la clase derivada y luego al destructor de la clase base en orden inverso al constructor. |
El concepto de constructor de copias está permitido cuando un objeto se inicializa desde la dirección de otro objeto. |
No se permite tal concepto. |
Conclusión: en el mundo real de la programación, los métodos de Constructores y Destructores son muy útiles ya que facilitan tareas cruciales durante la codificación. Estos fomentan la reutilización del código sin repeticiones innecesarias. Ambos son llamados implícitamente por el compilador incluso si no están definidos en la clase.
Publicación traducida automáticamente
Artículo escrito por geetanjali16 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA