【问题标题】:can't execute function returned in variable php无法执行变量 php 中返回的函数
【发布时间】:2016-12-19 06:49:08
【问题描述】:

我有一个具有这种语法的函数:

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

我无法使用

执行该功能
$variable()

有没有办法执行这个功能?

【问题讨论】:

标签: php function variables syntax


【解决方案1】:

我不知道它是什么...但是这里的例子:

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

【讨论】:

  • 或者在 PHP7 中 $b = $a()().
【解决方案2】:

函数正在返回,调用没有对它做任何事情使用 echo:

echo $variable();

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

$variable = doSomething();

function doeSomething(){
   //code
}

【讨论】:

  • 非常感谢,遗憾的是我无法编辑 $variable 的代码 =/
【解决方案3】:

无需分配新变量,您可以这样做:

call_user_func($variable());

【讨论】:

    【解决方案4】:

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

    调用$variable() 表示外部函数返回内部函数。请参阅 - 返回,而不是执行。但是由于您没有将外部函数的结果分配给任何变量,因此您的内部函数不会存储在任何地方。

    所以,解决办法是:

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

    或者(在 PHP7 中)

    $variable()();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-09
      相关资源
      最近更新 更多