在PHP中调用嵌套的Lambda函数

时间:2016-07-26 20:02:44

标签: php php-5.5

可以以嵌套方式调用lambda函数

<?php
$func=function() use($something,$func /** as you know it will be undefined so what could be other way arround**/){
  if($something){
       $func();
  }
}

2 个答案:

答案 0 :(得分:5)

将{P} $func传递给$func时,

$func尚未定义。 $func = null; $func = function() use (&$func) { } 只会在函数定义之后定义,这对于它来说有点太迟了。

简单的解决方法如下:

ACF

答案 1 :(得分:0)

use $func无法成功,因为直到lambda创建完成并返回lamba后才会定义$func。 PHP无法计时旅行。

你也做不了类似的事情:

$func = '';
$func = function() use $something, $func ....;

当它绕过$func is not defined时,它还会在lambda创建时将$func的值“锁定”到lambda中:

php > $foo = 'bar';
php > $baz = function() use($foo) { echo $foo; };
php > $baz();
bar
php > $foo = 'qux';
php > $baz();
bar