Hey all,

I'm having a strange problem with objects that I'm hoping someone out there can 
help me track down. I'll give a run down of the setup here, please note that 
register_globals is off.

A page creates two objects.

$document - this is always a new object and uses the ob_ functions to control 
the output. ob_start is called with a customer callback that writes the output 
to a file based on $_SERVER variables.

$session - this is an object that gets serialized whenever a request finishes 
and unserialized when the request begins.

Each object uses register_shutdown_function(array($this, "desconstructor")) to 
set a hook to clean up after itself which works without problems.

The following is then set.
$document->session =& $session;
$session->document =& $document;

Everything works fine through out the page all properties of the session can be 
accessed and set via $session->whatever or $document->session->whatever and vice 
versa for the $document object.

The problem arises when the $document->deconstructor function is called. As 
described above the ob_ callback fires and properly writes the captured output 
to a file then calls ob_end_clean() to dump the buffer and returns nothing, then 
right after the deconstructor function is called which does the following:
include("a header file.php");
include("the temp file from ob_");
include("a footer file.php");
unlink("the temp file from ob_");

Now this works beautifully, except that some of the object properties get 
destoryed. For instance since the includes are called from 
$document->deconstructor it makes sense that $this should reference the document 
object and that $this->session should reference the session object, but the 
following happens. In the file I have this:

$this is a <?=get_class($this)?><br>
$tihs->session is a <?get_class($this->session)?><br>

Which returns:

$this is a rj_document
$this->session is a

Now I thought that it might be because the session object is destroyed before 
the document object fires its deconstructor call so when the objects are 
associated I changed the document line to be:
$document->session = $session
But I get the same results.

Anyone have any insight?


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

Reply via email to