Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:16206 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 96879 invoked by uid 1010); 10 May 2005 20:32:17 -0000 Delivered-To: ezmlm-scan-internals@lists.php.net Delivered-To: ezmlm-internals@lists.php.net Received: (qmail 75791 invoked from network); 10 May 2005 20:19:23 -0000 Received: from unknown (HELO suserver.com) (127.0.0.1) by localhost with SMTP; 10 May 2005 20:19:23 -0000 X-Host-Fingerprint: 200.32.3.79 200-32-3-79.prima.net.ar Linux 2.4/2.6 Received: from ([200.32.3.79:34661] helo=mail.bpservers.com.ar) by pb1.pair.com (ecelerity 1.2 r(5656M)) with SMTP id 54/BE-35155-84711824 for ; Tue, 10 May 2005 16:19:21 -0400 Received: (qmail 23983 invoked by uid 0); 10 May 2005 20:19:13 -0000 Received: from unknown (HELO ?192.168.0.240?) (200.42.80.195) by 200-32-3-79.prima.net.ar with SMTP; 10 May 2005 20:19:13 -0000 Reply-To: lpedretti@suserver.com Organization: Axon Sistemas To: Wez Furlong Date: Tue, 10 May 2005 17:18:39 -0300 User-Agent: KMail/1.7.2 References: <200505091130.56300.lpedretti@suserver.com> <200505101148.56888.lpedretti@suserver.com> <4e89b4260505100910764d96c6@mail.gmail.com> In-Reply-To: <4e89b4260505100910764d96c6@mail.gmail.com> Cc: internals@lists.php.net MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Message-ID: <200505101718.39134.lpedretti@suserver.com> Subject: Re: [PHP-DEV] Re: [PHP] Re: [PHP-DEV] make new return a reference to existent object From: lpedretti@suserver.com (Leonardo Pedretti) Not so chicken and egg if, through reflection, a ReflectionClass object cou= ld=20 inform all the instances of that class in a simple array or with an iterato= r. May be there's another even better place where to implement such a=20 functionality, i'm just pointing reflection because i think it's natural th= at=20 a class should know what instances of itself are around there. Regards Leo On Tuesday 10 May 2005 13:10, Wez Furlong wrote: > Chicken and egg; you can't keep the object alive without a reference. > There is no way to achieve what you want, and we're not going to > change the behaviour of the new operator, nor are we going to build > some kind of singleton factory thingy into the core language; you have > the tools to do it "the right way", please use them and kill these two > threads. > > --Wez. > > On 5/10/05, Leonardo Pedretti wrote: > > 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 y= ou > > store a reference in an array so you lately return a reference to the > > already loaded instance instead of creating an aliasing of that instanc= e, > > 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=EDder de Equipo Proyecto Basalto > > > > -- > > PHP Internals - PHP Runtime Development Mailing List > > To unsubscribe, visit: http://www.php.net/unsub.php =2D-=20 Leonardo Pedretti Axon Sistemas L=EDder de Equipo Proyecto Basalto