Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:77519 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 77152 invoked from network); 23 Sep 2014 09:34:29 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 23 Sep 2014 09:34:29 -0000 Authentication-Results: pb1.pair.com header.from=narf@devilix.net; sender-id=pass Authentication-Results: pb1.pair.com smtp.mail=narf@devilix.net; spf=pass; sender-id=pass Received-SPF: pass (pb1.pair.com: domain devilix.net designates 209.85.214.170 as permitted sender) X-PHP-List-Original-Sender: narf@devilix.net X-Host-Fingerprint: 209.85.214.170 mail-ob0-f170.google.com Received: from [209.85.214.170] ([209.85.214.170:47728] helo=mail-ob0-f170.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 21/BB-09206-4AE31245 for ; Tue, 23 Sep 2014 05:34:29 -0400 Received: by mail-ob0-f170.google.com with SMTP id uz6so1946690obc.15 for ; Tue, 23 Sep 2014 02:34:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=devilix.net; s=google; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=GMVlM09C+iOkrk/JUFWuZzjCIKvrx6Ek7B57MXCpDkU=; b=AtwDOkFUfA+xv5kLSHVufD3Er9gKqoJDG2o+vrhcTXTzsNjfYZrIe2FoXEGIG6MVvR fONmAH/+s1tDnY+b42yJbqD9TiVNGCbBj148RCGuluhA/W6M//sb3ORmKKMCOvbZAqaB l+2yKGJT7nxXSrmN6nFON68IBQWzZbBjfwG6k= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=GMVlM09C+iOkrk/JUFWuZzjCIKvrx6Ek7B57MXCpDkU=; b=TLBT27xJj9CDJxAWrH5NP6fnuY1Z5WLJJFeZ5dmPo8ffHOz9yiiF5ZYChg2xneFMc3 uXqEg/WSyCpTtmmrpseKPXfKzbjcUDs1JUXqqFsUaSLkX1VYhBJKOBF2stt9PzEaThyZ VQNZJwPdLjfbns/7MfFHjqqBVu5ZG+K+k0B1jIPYRD7spKhqL6CvYpCg31nqq/fjNiYm gMrtoWJZuf3u9+A8EQeEfiw/zeN+vl3g8mwRqKCf5KXFgq6aSzd7VDfhPcPUnWiCIsie 3/HgeCUFkRHUzO7caowsxEF0MlJgUhZQcFSKsV8jQpc/LZdWA4qJ/IbuzmZTjTInlfV2 Yx6w== X-Gm-Message-State: ALoCoQlC/WXbE7fMuukBW6FRq30nUEgYZF/pkl4b8+kql2uXNbfKg8Yd8l7RZU7KGaBZIj8tFUUu MIME-Version: 1.0 X-Received: by 10.60.37.165 with SMTP id z5mr25458651oej.16.1411464866614; Tue, 23 Sep 2014 02:34:26 -0700 (PDT) Received: by 10.202.75.205 with HTTP; Tue, 23 Sep 2014 02:34:26 -0700 (PDT) In-Reply-To: <453BCA76-4648-466B-9FFB-68BDAC146264@ajf.me> References: <54213481.8080700@php.net> <453BCA76-4648-466B-9FFB-68BDAC146264@ajf.me> Date: Tue, 23 Sep 2014 12:34:26 +0300 Message-ID: To: Andrea Faulds Cc: Leigh , Michael Wallner , Nicolai Scheer , PHP Internals Content-Type: text/plain; charset=UTF-8 Subject: Re: [PHP-DEV] Invokation on __toString() for object used as array key From: narf@devilix.net (Andrey Andreev) On Tue, Sep 23, 2014 at 12:29 PM, Andrea Faulds wrote: > >> On 23 Sep 2014, at 10:15, Leigh wrote: >> >>> On 23 September 2014 09:51, Michael Wallner wrote: >>> >>> Yes, it was removed intentionally (quite a long time ago), like using >>> resources as array keys, to avoid hard-to-trace bugs for the user. At >>> least that's the reasoning I can remember. >> >> He doesn't want to add the object as a key, he wants to invoke __toString(). >> >> Is there really any harm in adding a IS_OBJECT case to >> zend_whatever_add_array_element, and checking if it has a __toString? It does work if you do an explicit cast to string: class Foo { public function __toString() { return 'Bar'; } } $array = array(); $object = new Foo(); $array[(string) $object] = 'this works'; Cheers, Andrey.