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 originalclass Foo {
public function __construct() { echo 'A'; }
public function __destruct() { echo 'Z'; }
}
$x = new Foo(); // echo 'A';
$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.