Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:28408 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 10004 invoked by uid 1010); 19 Mar 2007 02:19:02 -0000 Delivered-To: ezmlm-scan-internals@lists.php.net Delivered-To: ezmlm-internals@lists.php.net Received: (qmail 9989 invoked from network); 19 Mar 2007 02:19:02 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 19 Mar 2007 02:19:02 -0000 Authentication-Results: pb1.pair.com smtp.mail=wez@omniti.com; spf=pass; sender-id=pass Authentication-Results: pb1.pair.com header.from=wez@omniti.com; sender-id=pass; domainkeys=good Received-SPF: pass (pb1.pair.com: domain omniti.com designates 66.225.209.50 as permitted sender) DomainKey-Status: good X-DomainKeys: Ecelerity dk_validate implementing draft-delany-domainkeys-base-01 X-PHP-List-Original-Sender: wez@omniti.com X-Host-Fingerprint: 66.225.209.50 mail.omniti.com Linux 2.5 (sometimes 2.4) (4) Received: from [66.225.209.50] ([66.225.209.50:57049] helo=mail.omniti.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id AB/5A-18356-313FDF54 for ; Sun, 18 Mar 2007 21:19:01 -0500 X-DKIM: Ecelerity dkim_sign implementing draft-ietf-dkim-base-00 DKIM-Signature: a=rsa-sha1; d=omniti.com; s=test; t=1174270737; c=simple/simple; q=dns; i=@omniti.com; h=From; b=XXH/sHRDqKD2r+j3U10M0Qy8grWVcnPW3HG6CuqknykOvvtEOjx9cLKAcK7ETzX3 PKc5hJy1w4PlvFuYlHLfsCeq5JchO32MVXUvFA51K5z7+O0geYNMkhzf4qZcUvOG X-DomainKeys: Ecelerity dk_sign implementing draft-delany-domainkeys-base-01 DomainKey-Signature: q=dns; a=rsa-sha1; c=nofws; s=test; d=omniti.com; h=Authentication-Results:Received:In-Reply-To:References:Mime-Version:Content-Type:Message-Id:Cc:Content-Transfer-Encoding:From:Subject:Date:To:X-Mailer; b=olBSMcEPIQUMYQskQFfmtMEoEjVNVvkDlHuvoYyWl+Xwp3qPTC5Rbc9nX91SM42W jifluE7YHHziVI1HwDAiV68k2Moq0tScF3F14vacRZwQgNPc7/433BBFSF7pLg+u Authentication-Results: mail.omniti.com smtp.user=wez; auth=pass (LOGIN) Received: from [76.100.30.170] ([76.100.30.170:54716] helo=[192.168.50.4]) by mail.omniti.com (ecelerity 2.1.1.12 r(14453)) with ESMTPSA (cipher=AES128-SHA) id D3/3D-26454-E03FDF54 for ; Sun, 18 Mar 2007 22:18:57 -0400 In-Reply-To: <45FDF031.4010508@zend.com> References: <86478A67-DCA2-4000-9EF0-DA4338E8389B@omniti.com> <45FDF031.4010508@zend.com> Mime-Version: 1.0 (Apple Message framework v752.3) Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed Message-ID: Cc: internals@lists.php.net Content-Transfer-Encoding: 7bit Date: Sun, 18 Mar 2007 22:18:53 -0400 To: Stanislav Malyshev X-Mailer: Apple Mail (2.752.3) Subject: Re: [PHP-DEV] PATCH: anonymous functions in PHP From: wez@omniti.com (Wez Furlong) I didn't make it do anything fancy with scoping; it would make the implementation more complicated, and wouldn't fit so well with the way that scoping works in PHP, in that you need to explicitly reference the global scope to "break out" of your function scope. It would be cool if the lexical scope was inherited, but maybe not cool enough to warrant making it work :) --Wez. On Mar 18, 2007, at 10:06 PM, Stanislav Malyshev wrote: >> $data = array("zoo", "orange", "car", "lemon", "apple"); >> usort($data, function($a, $b) { return strcmp($a, $b); }); >> var_dump($data); # data is sorted alphabetically > > What happens if you do this: > > $data = array("zoo", "orange", "car", "lemon", "apple"); > $rev = 1; > usort($data, function($a, $b) { return $rev?strcmp($a, $b):!strcmp > ($a, $b); }); > var_dump($data); # data is sorted alphabetically > > This works in Javascript (probably Ruby too), but quite hard to > make work in PHP because $rev is in different scope. > Moreover, would it mean that this: > $f = function($a, $b) { return $rev?strcmp($a, $b):!strcmp($a, $b); } > would work too? Keeping right value of $rev? > -- > Stanislav Malyshev, Zend Products Engineer > stas@zend.com http://www.zend.com/ >