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

Reply via email to