On Tue, 2002-06-11 at 22:01, Tom Rogers wrote:
> Hi
> A revised cleanup function for multiple instances of the same class.
> 
> <?
> $ref = array();
> class cRoute{
>          var $txt; //identify the class
>          function cRoute($txt=""){
>                  global $ref;
>                  $x = count($ref);       //get an index
>                  $this->txt = $txt;
>                  $ref[$x] =& $this;      //setup a pointer
>                  //create a function
>                  $f_txt = 'global $ref;
>                          trigger_error("Please call close() to prevent
> problems, close() has been called for you.");
>                          $ref['.$x.']->close();';
>                  $func = create_function("",$f_txt);
>                  //register it
>                  register_shutdown_function($func);
>          }
> 
>          function close(){
>                  //close open sockets, etc.
>          mail("yourEmailHere",$this->txt."Callback","Function Close
called\n");
>      }
> }
> $c1 = new cRoute("First:");
> $c2 = new cRoute("Second:");
> echo "exiting now <br>";
> ?>
> 
> Tom

It's probably easier just to do it this way...less code to maintain
and no magic (although I like your solution too):


<?php
error_reporting(E_ALL);

class cRoute{
    function cRoute(){
        //register the shutdown function in case people who use this 
        //class dont call the appropiate close methods.
        register_shutdown_function(array($this, 'cleanup'));
    }

    function cleanup(){
        //cleanup.
        trigger_error("Please call close() before the page ends, to
prevent problems close() has been called automatically for you.");
        $this->close();
    }

    function close(){
        echo "In close\n";
    }
}

$one = new cRoute();
$two = new cRoute();
?>

-- 
 Torben Wilson <[EMAIL PROTECTED]>
 http://www.thebuttlesschaps.com
 http://www.hybrid17.com
 http://www.inflatableeye.com

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to