2010-04-11 13 views

Respuesta

10

Le da al objeto la oportunidad de prepararse para morir. 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, un objeto de base de datos en sí mismo puede querer cerrar el socket que está utilizando para comunicarse con un servidor de base de datos.

+1

- También sirve para limpiar: D – Hanseh

+4

También, algo a tener en cuenta, __destruct no solo se llama cuando se elimina un objeto, sino también cuando un objeto se sale del alcance, así como cuando el script finaliza – deadkarma

2

Supongo que tengo una clase Result que es un contenedor (implementando Iterator, entre otras sutilezas) para el objeto mysqli_result. Cuando destruyo uno de mis objetos Result, quiero asegurarme de llamar al método free() en el objeto mysqli_result para reclamar la memoria que estaba usando. Así que lo hago en el destructor de mi clase Result.

3

Entonces, probablemente sepa lo que hace un constructor. Si un constructor se configura, un destructor limpia. He aquí un ejemplo de la página 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); 
    } 
?> 

Here's the link a la documentación de PHP sobre el tema.

+0

¿Por qué? incluso necesita eliminar cualquier cosa. Si el objeto está siendo destruido, las referencias también serán destruidas, y cuando ya no haya más referencia, los objetos de los que depende tampoco tendrán referencia, por lo que se invocarán los destructores de esas dependencias. – Hafiz

Cuestiones relacionadas