Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:23967 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 95416 invoked by uid 1010); 5 Jun 2006 21:05:42 -0000 Delivered-To: ezmlm-scan-internals@lists.php.net Delivered-To: ezmlm-internals@lists.php.net Received: (qmail 95401 invoked from network); 5 Jun 2006 21:05:42 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 5 Jun 2006 21:05:42 -0000 X-PHP-List-Original-Sender: cellog@php.net X-Host-Fingerprint: 66.79.163.178 bluga.net Linux 2.5 (sometimes 2.4) (4) Received: from ([66.79.163.178:43314] helo=mail.bluga.net) by pb1.pair.com (ecelerity 2.0 beta r(6323M)) with SMTP id 77/B5-00946-5AC94844 for ; Mon, 05 Jun 2006 17:05:41 -0400 Received: from mail.bluga.net (mail.bluga.net [127.0.0.1]) by mail.bluga.net (Postfix) with ESMTP id 70C0E27DDF; Mon, 5 Jun 2006 14:14:04 -0700 (PDT) Received: from [192.168.0.103] (CPE-24-208-79-238.neb.res.rr.com [24.208.79.238]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.bluga.net (Postfix) with ESMTP id 8CD6027DCF; Mon, 5 Jun 2006 14:14:03 -0700 (PDT) Message-ID: <44849C9E.3030702@php.net> Date: Mon, 05 Jun 2006 16:05:34 -0500 User-Agent: Mozilla Thunderbird 1.0.6 (Windows/20050716) X-Accept-Language: en-us, en MIME-Version: 1.0 To: Jasper Bryant-Greene Cc: ceo@l-i-e.com, Robert Amos , internals@lists.php.net References: <795156743.20060603134212@marcus-boerger.de> <3928.209.254.223.2.1149477058.squirrel@www.l-i-e.com> <1944df00606042059v2b6c5717m27afee0b52d52339@mail.gmail.com> <52800.67.108.68.36.1149522925.squirrel@www.l-i-e.com> <44849599.3060102@album.co.nz> In-Reply-To: <44849599.3060102@album.co.nz> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Virus-Scanned: ClamAV using ClamSMTP Subject: Re: [PHP-DEV] Missing __toString() part From: cellog@php.net (Greg Beaver) You miss the point. The warning that is helpful in debugging, it has nothing to do with designing things to break, it has to do with unintentional bugs. If in 1 case of 1000 in a loop, there is an object instead of a string used as a key due to a bug (one example: this can easily happen if you forget to check for a PEAR_Error on return from a legacy PEAR class), a warning is printed. With some kind of magic conversion, this warning will instead translate into a magic conversion to string, causing unpredictable and very difficult-to-track-down behavior. Greg Jasper Bryant-Greene wrote: > All I've got to say on the matter is that if anyone is relying on that > kind of behaviour for something serious, then their code deserves to break. > > Jasper > > Richard Lynch wrote: > >>>That *IS* a current behaviour. >>> >>>Returns a warning and leaves the array un-modified. >>> >>> >>>On Sun, June 4, 2006 10:59 pm, Robert Amos wrote: >>> >>>>As far as I can see, and I'm sure someone will be kind enough to >>>>correct me >>>>if I'm wrong, but there is no current behaviour for it, it returns a >>>>warning. >>>> >>>>$a = new stdClass; >>>>$b[$a] = 0; >>>> >>>>Warning: Illegal offset type in t3.php on line 2 >>>> >>>>And results in an empty array (in this case) so it does nothing. >>>> >>>>-bok >>>> >>>>On 6/5/06, Richard Lynch wrote: >>>> >>>>>On Sat, June 3, 2006 6:42 am, Marcus Boerger wrote: >>>>> >>>>>> the attached patch closes one more __toString() part. It allows >>>>>>to use objects that define __toString as indexes to arrays. What >>>>> >>>>>do >>>>> >>>>>>you guys think about this, should we add it or stay with the old >>>>>>behavior that didn't allow objects as indexes at all. >>>>> >>>>>I use objects rarely, and am not sure I care all that much, but... >>>>> >>>>>Seems to me that there is a REALLY good chance that there ARE >>>>>scripts >>>>>"out there" that rely on current behaviour of: >>>>> >>>>>$a = new Foo(); >>>>>$arr[$a] = 42; >>>>> >>>>>Never mind that that's a really dumb thing to have -- Somebody is >>>>>relying on it doing whatever it does... >>>>> >>>>>Whether that is erroring out or just turning all objects into "" >>>>>doesn't matter. Somebody relies on it doing the same thing it >>>>>always >>>>>did. >>>>> >>>>>Don't break that, please, in 5.2 -- Do whatever you want in 6.0 on >>>>>that. >>>>> >>>>>This all seems like much ado about nothing to me. Anybody brainy >>>>>enough to NEED their objects as array indices can probably manage to >>>>>write a function to uniquely identify their/all objects. >>>>> >>>>>Sorry if my votes aren't fitting into the schema of voting... I >>>>>kinda >>>>>got glassy-eyed with this whole thread, to tell the truth. >>>>> >>>>>-- >>>>>Like Music? >>>>>http://l-i-e.com/artists.htm >>>>> >>>>>-- >>>>>PHP Internals - PHP Runtime Development Mailing List >>>>>To unsubscribe, visit: http://www.php.net/unsub.php >>>>> >>>>> >>>> >>>>-- >>>>Xnyo - http://xnyo.odynia.org/ >>>> >>> >>>