是否可以做这样的事情。假设我们有一个接受字符串作为参数的函数。但是要提供这个字符串,我们必须对数据进行一些处理。所以我决定使用闭包,就像在JS中一样:
function i_accept_str($str) {
// do something with str
}
$someOutsideScopeVar = array(1,2,3);
i_accept_str((function() {
// do stuff with the $someOutsideScopeVar
$result = implode(',', $someOutsideScopeVar); // this is silly example
return $result;
})());
这个想法是在调用i_accept_str()
时能够直接提供字符串结果......我可能可以用call_user_func
来做,这已知是无效但有其他选择吗?
接受PHP 5.3和PHP 5.4解决方案(以上所需的行为已经过测试,但在PHP 5.3上不起作用,但可能适用于PHP 5.4)。
答案 0 :(得分:2)
在PHP(> = 5.3.0,使用5.4.6测试)中,您必须使用call_user_func
并使用use
从外部范围导入变量。
<?php
function i_accept_str($str) {
// do something with str
echo $str;
}
$someOutsideScopeVar = array(1,2,3);
i_accept_str(call_user_func(function() use ($someOutsideScopeVar) {
// do stuff with the $someOutsideScopeVar
$result = implode(',', $someOutsideScopeVar); // this is silly example
return $result;
}));