Re: Re: make new return a reference to existent object
| From: | Leonardo Pedretti | Date: | Tue, 10 May 2005 14:48:56 +0000 |
| Subject: | Re: Re: make new return a reference to existent object | ||
| References: | 1 2 3 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-16199@lists.php.net to get a copy of this message | ||
Yes, the question was pointed in another way, the destructors are not called
until the last reference to an object has been removed, but if you store a
reference in an array so you lately return a reference to the already loaded
instance instead of creating an aliasing of that instance, then you get the
undesirable behavior that the object is never destroyed until the script
ends, because there is always a reference in that array and you can not check
when references are removed in any way.
And leaving the array growing while each object that exists in a huge database
is slowly loaded and never unloaded, is not an option.
Leo
On Tuesday 10 May 2005 11:26, you wrote:
> Leonardo Pedretti wrote:
> > It would not be such a problem to write something that does the same task
> > through a static or global function, but unfortunately it is impossible,
> > due to the following: you can build a cache in an array, then in a
> > __new() function you could check if the requested object is already
> > loaded and return a reference. However, if this is the case, objects that
> > enter the cache never leave it because they are still referenced in the
> > array when all other references have gone, so they never destruct, except
> > when the array is destroyed at program's end.
>
> PHP5 has destructors ...
>
> regards,
> Lukas
--
Leonardo Pedretti
Axon Sistemas
Líder de Equipo Proyecto Basalto