Re: Strange problem with objects
| From: | Evan | Date: | Thu, 25 Jul 2002 02:34:28 +0000 |
| Subject: | Re: Strange problem with objects | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-109404@lists.php.net to get a copy of this message | ||
Never mind, I just found and exceptable work around.
$GLOBALS["session"] & $GLOBALS["document"] contain the objects.
(and after all that typing :)
-Evan
On Wed, Jul 24, 2002 at 10:21:32PM -0400, Evan said:
> 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?
>
>
> Thanks,
> Evan
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>