In addendum I'd like to correct the syntax that I had someone in IRC test.
Apparently it works as such:
$foo = NULL;
$foo = function($foo) use (&$foo) {
...
}
Still rather hackish, but better than globals I suppose?
Thanks,
Justin Martin
Justin Martin wrote:
> 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
>>
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php