【问题标题】:How to dynamically define a nested PHP function using parent function parameters如何使用父函数参数动态定义嵌套的 PHP 函数
【发布时间】:2016-12-08 08:44:13
【问题描述】:

我尝试到处寻找这个,或者它只是无法完成?

假设我想要一个用于创建其他函数的函数,这些函数具有基于传入参数的新函数名称,这甚至可能吗?

我不断得到未定义的功能。除了柯里化能力,你能不能用参数命名嵌套函数并返回嵌套函数以供稍后调用(通过你在参数中给它的名字)?

function maker_of_functions($secFuncName, $foo) { 
    $secFuncName = function($bar) { 
        $fooBar = $foo + $bar;
    }
    return $secFuncName();
}

后面的代码调用:

maker_of_functions('adder', 3);
echo adder(5);

【问题讨论】:

  • 哎呀,这是编辑中修正的错字。
  • 如果你需要currying - 也许搜索一下?
  • 问题主要是你能不能用父函数参数定义(和命名)一个嵌套函数。
  • 如果我没记错的话,这个子函数只有在父函数还活着的情况下才会存在,因此只能在父函数本身内部使用?

标签: php function callback closures anonymous-function


【解决方案1】:

使用父函数参数

要创建一个使用父函数参数的新函数,您可以使用闭包:

function maker_of_functions($foo) { 
    // notice the "use" keyword below
    return function($bar) use ($foo) { 
        return $foo + $bar;
    };
}

然后使用它:

$adder = maker_of_functions(3);
echo $adder(5);

命名函数

闭包是一个匿名函数。它没有名字。它仅作为(我认为)对函数的引用存在,该函数包含在变量中。如果你想要一个动态命名的变量,你可以:

$name = "myNewNamedFunction";
$$name = maker_of_functions(3);

echo $myNewNamedFunction(6);

其他信息

【讨论】:

  • 非常感谢,这样就可以了!完全按照我的需要工作。
猜你喜欢
  • 1970-01-01
  • 2016-01-08
  • 1970-01-01
  • 2017-08-11
  • 2014-01-10
  • 2021-01-23
  • 2011-07-20
  • 1970-01-01
相关资源
最近更新 更多