RE: [PHP-DEV] [PATCH] [RFC] Closures and lambda functions in PHP
| From: | Andi Gutmans | Date: | Fri, 27 Jun 2008 00:44:34 +0000 |
| Subject: | RE: [PHP-DEV] [PATCH] [RFC] Closures and lambda functions in PHP | ||
| References: | 1 2 3 4 5 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-38652@lists.php.net to get a copy of this message | ||
Hey Christian,
Nice job!
More below:
> -----Original Message-----
> From: Christian Seiler [mailto:chris_se@gmx.net]
> Sent: Thursday, June 26, 2008 9:24 AM
> To: Dmitry Stogov
> Cc: php-dev List; Andi Gutmans; Stas Malyshev
> Subject: Re: [PHP-DEV] [PATCH] [RFC] Closures and lambda functions in PHP
>
-snip-
>
> * Lexical vars are now copied instead of referenced by default. Using
> & in front of the var, the behaviour may be changed. I added that in
> order to demonstrate that both was possible and that a simply change
> of grammar suffices. In my eyes this is the main issue where a
> discussion has to take place (i.e. copy or reference by default?
> possibility to change default via syntax? which lexical syntax?)
> before the proposal can be accepted.
I think doing this mixed approach is the right one, i.e. $var1, &$var2. It delivers choice and
adds clarity as it's explicit about value vs. reference.
> * I provided patches for both lexical $var and use ($var) syntaxes.
I lean towards the use(...) syntax.
> * I provided a patch variant that only stores $this if $this is
> explicitely used inside a closure (or a nested closure of that
> closure). This works since it is possible to detect whether $this
> is used at compile time. For this, I have added a this_used flag
> to the op_array structure.
Safest not to take shortcuts. You get yourself into trouble with things which will stop working. -1
on this optimization.
> * I added tests (Zend/tests/closures_*.phpt) that ensure the correct
> behaviour of closures.
Excellent.
> Anyway, feel free to discuss.
>
> In my eyes, the following questions should be answered:
>
> * Do you want closures in PHP?
I think most people here feel it's useful or are at least indifferent.
> * Do you want closures in PHP 5.3?
I really think we need to get the release process for 5.3 going so I suggest to do it for the
following minor version and commit it to PHP 6.
Andi