1

有没有可能做这样的事情。假设我们有一个接受字符串作为参数的函数。但是要提供这个字符串,我们必须对数据进行一些处理。所以我决定使用闭包,就像在 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...)。

4

1 回答 1

2

在 PHP(>=5.3.0,使用 5.4.6 测试)中,您必须使用call_user_func并从外部 Scope 导入变量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;
}));
于 2013-02-26T18:17:09.517 回答