Alternativa register_shutdown_function PHP

  • joebert
  • Weathered
  • Genius
  • Avatar de Usuario
  • Registrado: Feb 10, 2004
  • Mensajes: 11879
  • Loc: Clearwater, FL
  • Status: Offline

Nota Noviembre 5th, 2009, 12:42 am

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 Código: [ Download ] [ Select ]
<?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);
   }
}
 
?>
  1. <?php
  2.  
  3. class garbage
  4. {
  5.    protected static $can = array();
  6.    public static function collect($mask)
  7.    {
  8.       array_push(garbage::$can, new garbage($mask));
  9.    }
  10.    
  11.    private $mask;
  12.    public function __construct($mask)
  13.    {
  14.       $this->mask = $mask;
  15.    }
  16.    public function __destruct()
  17.    {
  18.       file_utils::glob_delete($this->mask);
  19.    }
  20. }
  21.  
  22. ?>
Why yes, yes I am.
  • Anonymous
  • Bot
  • No Avatar
  • Registrado: 25 Feb 2008
  • Mensajes: ?
  • Loc: Ozzuland
  • Status: Online

Nota Noviembre 5th, 2009, 12:42 am

Publicar Información

  • Total de mensajes en este tema: 1 mensaje
  • Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 184 invitados
  • No puede abrir nuevos temas en este Foro
  • No puede responder a temas en este Foro
  • No puede editar sus mensajes en este Foro
  • No puede borrar sus mensajes en este Foro
  • No puede enviar adjuntos en este Foro
 
 

© Unmelted Enterprises 1998-2009. Impulsado por phpBB © 2001-2009 phpBB Group.