在PHP中调用嵌套Lambda函数

在PHP中调用嵌套Lambda函数,php,php-5.5,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(); } } 将$func传递给$func时,尚未定义它$func只会在函数定义之后定义,这对它来说太晚了一点 简单的解决方法如下: $func

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

<?php
$func=function() use($something,$func /** as you know it will be undefined so what could be other way arround**/){
  if($something){
       $func();
  }
}
将$func传递给$func时,尚未定义它$func只会在函数定义之后定义,这对它来说太晚了一点

简单的解决方法如下:

$func = null;
$func = function() use (&$func) {

}
使用$func无法成功,因为在lambda创建完成并返回lamba之后才会定义$func。PHP不能进行时间旅行

您也不能执行以下操作:

$func = '';
$func = function() use $something, $func ....;
虽然没有定义$func,但它也会在创建lambda时将$func的值锁定到lambda中:

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

为什么要否决投票?这不是和PHP有关吗?这些是允许的,但真正的问题是不允许的。所以,在定义某件事时,你想用上面提到的某件事吗?好的。。。我从来没有想过用参考资料来做这个……我也是。。。。。。。。。。。。。