No me había dado cuenta hasta hoy que PHP en realidad tiene de-constructores de objetos, que aspira a mí, sino que también resulta ser el momento perfecto para mí, para descubrirlas. En vez de tontear con
register_shutdown_function y preocuparse por si algo no soy ni siquiera seguro de que leí hace unos años acerca de algunos problemas con los servidores de esa función es incluso la forma en que lo es.
En cualquier caso, la contrapartida __destruct método mágico para __construct es más fácil de usar que register_shutdown_function de todos modos, si usted me pregunta. Lo que chupa un poco sin embargo, es que el uso de __destruct requiere que usted tenga las referencias a los objetos construidos alrededor persistente hasta el final de la ejecución de secuencias de comandos.
Usted puede utilizar una matriz estática dentro de la clase para salvar a pesar de estas referencias.
Anywho, heres un ejemplo. Lo utilizo para almacenar en caché las referencias a los archivos HTML que deben ser eliminados.
<?php
class garbage
{
protected static $can = array();
public static function collect($mask)
{
array_push(garbage::$can, new garbage($mask));
}
private $mask;
public function __construct($mask)
{
$this->mask = $mask;
}
public function __destruct()
{
file_utils::glob_delete($this->mask);
}
}
?>
- <?php
-
- class garbage
- {
- protected static $can = array();
- public static function collect($mask)
- {
- array_push(garbage::$can, new garbage($mask));
- }
-
- private $mask;
- public function __construct($mask)
- {
- $this->mask = $mask;
- }
- public function __destruct()
- {
- file_utils::glob_delete($this->mask);
- }
- }
-
- ?>
Patience.