Hi
One way is to create an external reference to your class and use that in 
the cleanup function. To make the cleanup function visible it has to be 
declared inside the constructor (which makes it invisible to the rest of 
the class:) This is how I have done it:

<?
$ref = array();
class cRoute{
     function cRoute(){
         global $ref;
          $ref[] =& $this;
          //register the shutdown function in case people who use this 
class dont call the appropiate close methods.
         register_shutdown_function("cleanup");
         function cleanup(){
         global $ref;
                 /cleanup.
         trigger_error("Please call close() to prevent problems, close() 
has been called for you.");
                 $ref[0]->close();
         }
     }
     function close(){
                 //close open sockets, etc.
         mail("yourEmailHere","callback","Function Close called\n");
     }
}
$clean = new cRoute;
echo "exiting now <br>";
exit;
?>


Tom






At 04:21 PM 12/06/2002, William_dw -- Sqlcoders wrote:
>Hi there!,
>I'm trying to emulate a class destructor, according to the PHP documentation
>I can emulate this by using a call to register_shutdown_function(),
>containing the function to be called upon shutdown.
>
>While this apparently works outside a class, I want to use it inside a
>class, in other words I want to have something like this:
>
>class cRoute{
>     function cRoute(){
>         //register the shutdown function in case people who use this class
>dont call the appropiate close methods.
>         register_shutdown_function("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(){
>         //close open sockets, etc.
>     }
>}
>
>I have tried:
>         register_shutdown_function("cleanup()");
>         register_shutdown_function("$this->cleanup()");
>         register_shutdown_function($this->cleanup());
>         register_shutdown_function("cDB::cleanup()");
>
>They all return something like: Warning: Unable to call ()() - function does
>not exist in Unknown on line 0
>
>If anyone has any ideas I'd appreciate the help.
>Thanks in advance!,
>Dw.
>
>
>--
>PHP General Mailing List (http://www.php.net/)
>To unsubscribe, visit: http://www.php.net/unsub.php


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

Reply via email to