Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:28460 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 45304 invoked by uid 1010); 19 Mar 2007 21:59:46 -0000 Delivered-To: ezmlm-scan-internals@lists.php.net Delivered-To: ezmlm-internals@lists.php.net Received: (qmail 45289 invoked from network); 19 Mar 2007 21:59:46 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 19 Mar 2007 21:59:46 -0000 Authentication-Results: pb1.pair.com smtp.mail=andi@zend.com; spf=pass; sender-id=pass Authentication-Results: pb1.pair.com header.from=andi@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: andi@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:25149] helo=us-ex1.zend.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id FF/F5-01604-1D70FF54 for ; Mon, 19 Mar 2007 16:59:46 -0500 X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Date: Mon, 19 Mar 2007 14:59:13 -0700 Message-ID: <698DE66518E7CA45812BD18E807866CE185525@us-ex1.zend.net> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: [PHP-DEV] PATCH: anonymous functions in PHP Thread-Index: AcdqbqS05RVfccThQfKbcHpluSd1YgAAiTEw 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> To: "Stas Malyshev" , "Robert Cummings" Cc: "Wez Furlong" , "Sean Coates" , Subject: RE: [PHP-DEV] PATCH: anonymous functions in PHP From: andi@zend.com ("Andi Gutmans") We could compile the anonymous function at compile-time but leave placeholders which need to be "fixed-up" when at run-time the actual closure is created. For this purpose we could introduce a new magical variables $_SCOPE["var"] which references the current $var during fixup time. So here's an example: $var =3D php_version(); $fancyVer =3D function () { return "PHP $_SCOPE['ver']; }; So what this does is compile the "anonymous function" at compile-time, but when this line is executed (note, this line of code should also be reached during execution), then we do the fix-up for $_SCOPE variables. Regular variables remain what they would in create_function(). Fix-up time would be faster than compiling the code. Thoughts? Andi