不能执行变量php返回的函数


can't execute function returned in variable php

我有一个这样语法的函数:

$variable = function() {
    return function(){
        //code
    }
}

我不能用

执行这个函数
$variable()

是否有执行这个函数的方法

我不知道为什么…但是这里的例子:

$a = function () {
   return function () { 
       return 1; 
   };
};
$b = $a();
echo $b();

您的匿名函数(外部函数),存储在$variable中返回另一个函数(内部函数)。

调用$variable()意味着外部函数返回内部函数。看到——返回,不是执行。但是,由于您不将外部函数的结果赋值给任何变量,因此内部函数不会存储在任何地方。

所以,解决方案是:

$res = $variable();  // res stores an inner function
$res();

Or (in PHP7)

$variable()();

函数正在返回并且调用者没有对它做任何操作,使用echo:

echo $variable();

为了清晰,我建议使用单独的函数。

$variable = doSomething();
function doeSomething(){
   //code
}

无需传递给new变量,您可以这样做:

call_user_func($variable());