Re: Closures and __FUNCTION__
| From: | Justin Martin | Date: | Mon, 13 Apr 2009 07:14:04 +0000 |
| Subject: | Re: Closures and __FUNCTION__ | ||
| References: | 1 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-43667@lists.php.net to get a copy of this message | ||
Hi Peter,
If I recall correctly, you can use the 'use' keyword.
$factorial = function($foo) use ($factorial) {
$factorial($foo);
}
$factorial('Hello World!');
I'm still having issues compiling 5.3 on my system, so I haven't tested
this.
Thanks,
Justin Martin
Peter Danenberg wrote:
> The original anonymous functions patch[1] contained support for
> __FUNCTION__ as a recursion mechanism in closures, such that I should
> be able to do something like this:
>
> $factorial = function($n) {
> if ($n == 1)
> return 1;
> else
> return $n * call_user_func(__FUNCTION__, $n - 1);
>
> };
>
> print $factorial(3); // => 6
>
>
> It fails with a warning, though:
>
> Warning: call_user_func() expects parameter 1 to be a valid
> callback, function '{closure}' not found or invalid function name
>
> Is there another recursion mechanism for closures besides something
> like the $GLOBALS['factorial'] hack?
>
> Footnotes:
> [1]
> http://marc.info/?l=php-internals&m=119995982228453&w=2
>