objeto - php constructor overload
¿Cuándo usar destructor en php? (4)
Entonces, probablemente sepas lo que hace un constructor. Si un constructor se instala, un destructor se limpia. Aquí hay un ejemplo del sitio PHP:
<?php
class my_class {
public $error_reporting = false;
function __construct($error_reporting = false) {
$this->error_reporting = $error_reporting;
}
function __destruct() {
if($this->error_reporting === true) $this->show_report();
unset($this->error_reporting);
}
?>
Aquí está el enlace a la documentación de PHP sobre el tema.
¿Cuál es el propósito principal de un destructor?
¿Podría dar algún ejemplo de lo que querría ejecutar cuando se elimina un objeto?
Le da al objeto la oportunidad de prepararse para ser asesinado. Esto podría significar limpieza manual, persistencia de estado, etc.
Por ejemplo, un modelo puede querer guardar todas sus propiedades actuales en la base de datos.
O bien, un objeto Base de datos en sí podría querer cerrar el socket que está utilizando para comunicarse con un servidor de bases de datos.
Referencia para el libro
El destructor a menudo se usa para conexiones de base de datos cercanas y fclose ()
para la conexión fopen()
en clase
Supongamos que tengo una clase de Result
que es un contenedor (implementando Iterator , entre otras sutilezas) para el objeto mysqli_result . Cuando destruyo uno de mis objetos de Result
, quiero asegurarme de llamar al método free()
en el objeto mysqli_result
para reclamar la memoria que estaba usando. Así que hago eso en el destructor de mi clase de Result
.