Javascript PHP执行的函数为函数';s参数
在PHP中,是否可以将已执行的函数作为函数的参数传递,这样函数的结果将被传递,而不是回调函数对象?Javascript PHP执行的函数为函数';s参数,javascript,php,Javascript,Php,在PHP中,是否可以将已执行的函数作为函数的参数传递,这样函数的结果将被传递,而不是回调函数对象? 不接触作用域函数(无eval或额外的魔术执行) 比方说,我想给这个函数的参数不清楚。因此,在赋予函数之前,必须对此做出决定。 目前,这始终是这样的: $tmp=($something==$bla)?42:7; 我的职能($tmp); 对于这样一个简短的决定来说,问题并不大。但有时有两种以上的可能性。因此,如果需要elseif,或者需要开关盒。 但如果只是把这样的东西放进去会更干净: myFunc
不接触作用域函数(无eval或额外的魔术执行) 比方说,我想给这个函数的参数不清楚。因此,在赋予函数之前,必须对此做出决定。
目前,这始终是这样的:
$tmp=($something==$bla)?42:7;
我的职能($tmp);
对于这样一个简短的决定来说,问题并不大。但有时有两种以上的可能性。因此,如果需要elseif,或者需要开关盒。但如果只是把这样的东西放进去会更干净:
myFunction(function(){
if(…){return 42;}
elseif(…){return 7;}
elseif(…){return 5;}
elseif(…){return 12;}
else{return 1;}
});
因此,无需先将其保存到变量。仅针对更干净的代码,减少
$tmp
或$trash
变量。这应该是您要寻找的:
匿名函数(也称为闭包)允许创建
没有指定名称的函数。它们是最有用的
回调参数的值,但它们还有许多其他用途
匿名函数是使用闭包类实现的
下面是一个代码示例:
<?php
$greet = function($name)
{
printf("Hello %s\r\n", $name);
};
$greet('World');
$greet('PHP');
?>
为了完整起见,还有一个代码示例,关于如何将函数名作为参数传递,并在之后调用它:
<?php
function here() {
print 'here';
}
function dynamo($name) {
$name();
}
//Will work
dynamo('here');
//Will fail
dynamo('not_here');
因此,理解了(谢谢),我发现可以直接执行函数,方法是用括号括起来,然后是参数括号,参数括号将是空的或不空的,这取决于是否要将一些变量从主上下文中赋予较低级别的函数
在以下所有示例中,var\u dump
的输出为42
没有可变参数的示例
//以后应该调用的函数
函数myFunction($test){
var_dump($测试);
}
//以已执行函数作为参数的函数调用
myFunction((函数(){
返回42;
})());
具有可变参数的示例
$someVar=42;
函数myFunction($test){
var_dump($测试);
}
myFunction((函数($tmp){
返回$tmp;
})($someVar));
或者使用语句
$someVar=42;
函数myFunction($test){
var_dump($测试);
}
myFunction((function()用法($someVar){
返回$someVar;
})());
“控制台中的输出将是42”-不,如果有那么复杂的东西,它不会是一个命名函数吗?PHP有完全相同的语法。在某个时候,您必须主动调用该函数。在将其传递给另一个函数之前(实际上只传递返回值),或者在另一个函数内部。您没有真正显示匿名函数。你仍然给他们起了名字。第一个例子给一个变量分配了一个函数,是的。但我认为这是我在php文档中找到的最容易阅读的示例。这里有几个例子是完全匿名的函数,以防有人感兴趣。