Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:28506 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 1972 invoked by uid 1010); 21 Mar 2007 00:24:10 -0000 Delivered-To: ezmlm-scan-internals@lists.php.net Delivered-To: ezmlm-internals@lists.php.net Received: (qmail 1957 invoked from network); 21 Mar 2007 00:24:10 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 21 Mar 2007 00:24:10 -0000 Authentication-Results: pb1.pair.com smtp.mail=stas@zend.com; spf=pass; sender-id=pass Authentication-Results: pb1.pair.com header.from=stas@zend.com; sender-id=pass Received-SPF: pass (pb1.pair.com: domain zend.com designates 63.205.162.114 as permitted sender) X-PHP-List-Original-Sender: stas@zend.com X-Host-Fingerprint: 63.205.162.114 unknown Windows 2000 SP4, XP SP1 Received: from [63.205.162.114] ([63.205.162.114:45681] helo=us-ex1.zend.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 88/B6-48444-82B70064 for ; Tue, 20 Mar 2007 19:24:10 -0500 Received: from [127.0.0.1] ([192.168.16.109]) by us-ex1.zend.com with Microsoft SMTPSVC(6.0.3790.1830); Tue, 20 Mar 2007 17:24:05 -0700 Message-ID: <46007B21.1040001@zend.com> Date: Tue, 20 Mar 2007 17:24:01 -0700 Organization: Zend Technologies User-Agent: Thunderbird 2.0b2 (Windows/20070116) MIME-Version: 1.0 To: Sara Golemon CC: Sean Coates , Wez Furlong , Andi Gutmans , internals@lists.php.net References: <86478A67-DCA2-4000-9EF0-DA4338E8389B@omniti.com> <45FDF031.4010508@zend.com> <45FE2312.1050506@zend.com> <45FED6D9.8030307@caedmon.net> <45FEDAE5.2010309@zend.com> <45FEE396.7040905@caedmon.net> <0757BDEA-65F5-4123-B647-060DCA84B4B0@omniti.com> <45FEEF52.1060002@zend.com> <1174336464.24632.110.camel@blobule> <45FEF9A5.4050409@zend.com> <1174338801.24632.124.camel@blobule> <45FEFDCE.7050100@zend.com> <1174339527.24632.129.camel@blobule> <45FF01FE.6070504@zend.com> <698DE66518E7CA45812BD18E807866CE185525@us-ex1.zend.net> <2b2f60dc7b3112ac164aba20fbddd29d@gravitonic.com> <460025EA.5050303@zend.com> <46002967.8030909@caedmon.net> <46003824.1000909@zend.com> <4600754B.100@php.net> In-Reply-To: <4600754B.100@php.net> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-OriginalArrivalTime: 21 Mar 2007 00:24:05.0847 (UTC) FILETIME=[3C1CFE70:01C76B4F] Subject: Re: [PHP-DEV] PATCH: anonymous functions in PHP From: stas@zend.com (Stanislav Malyshev) > $_SCOPE doesn't need to be that special... It can just be an object with > overloaded array access... Whenever a dim is fetched for that object, > check current_execute_data->prev->symbol_table for the variable and > return that. Once again - current_execute_data->prev at *closure runtime* has nothing common with the symbol table that closure is supposed to capture. The symbol table is present at the *closure instantiation* time - i.e. when $foo = function(...) {...} (1) is executed, not when $foo(...) (2) is executed. (1) may be executed in scope entirely unrelated to (2) and only in rare special cases scope (1) would precede scope (2). In many other cases, totally unrelated scope would be predecessor of (2) and getting values from there would be a big surprise to the user. -- Stanislav Malyshev, Zend Products Engineer stas@zend.com http://www.zend.com/