Ver Mensaje Individual
  #2 (permalink)  
Antiguo 11/03/2016, 00:06
Avatar de pateketrueke
pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 11 meses
Puntos: 2534
Respuesta: No entiendo bien __desctruct

Cita:
No se si lo entiendo, pero supongo que un destructor no destruye nada directamente, supongo que es algo que se aplica después de llamar un método en una clase
Estás entendiendo muy mal el concepto de construcción y destrucción de una instancia de clase.

Claramente el "constructor" se ejecuta cuando creas una instancia nueva de una clase usando new.

Y bueno, el "destructor" no se ejecuta al finalizar ningún método: como dice su nombre "se invoca cuando se destruye" la instancia, ejemplo:
Código PHP:
Ver original
  1. class Foo {
  2.   public function __construct() { echo 'A'; }
  3.   public function __destruct() { echo 'Z'; }
  4. }
  5.  
  6. $x = new Foo(); // echo 'A';
  7. $x = null;  // echo 'Z';

Al usar "$x = null" estamos básicamente destruyendo la instancia asignada a $x al cambiar la referencia, entonces el recolector de basura se encarga de ello e invoca al destructor de dicha instancia antes de destruirla de memoria.

La forma directa de "destruir" una instancia es indicarle al "garbage collector" que ya no la necesitas.

La forma indirecta es cuando el script finaliza su ejecución, que es exactamente lo que te sucede a ti y por eso no te das cuenta de cuando se invoca el constructor.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.