2016-08-02 103 views
1

我试过寻找这个地方,或者它可能无法完成?如何使用父函数参数动态定义嵌套的PHP函数

所以说我想有一个函数用于创建其他函数,它具有基于传入参数的新函数名称,这甚至有可能吗?

我不断收到函数未定义。除了压缩能力之外,你可以使用参数命名嵌套函数并返回稍后调用的嵌套函数(按照您在参数中给出的名称)?

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

在后面的代码中调用:

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

哎呦,这是固定在编辑错字。 – Secular12

+0

如果你需要咖啡 - 也许搜索? –

+1

可能重复[是否可以在PHP中调用方法调用?](http://stackoverflow.com/questions/1609985/is-it-possible-to-curry-method-calls-in-php) –

回答

2

使用父功能参数

要创建一个使用父功能PARAMS一个新的功能,你可以使用闭包:

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); 

信息

+0

非常感谢,这将会很好!正如我所需要的那样工作。 – Secular12