php在匿名函数内调用匿名函数

时间:2014-07-21 08:16:11

标签: php closures

Php版本:5.4

function foo(callable $succCallback) {

        $isCallable = is_callable($succCallback);
        echo "is callable outer ".is_callable($succCallback);
        $success = function($fileInfo) {
            echo "<br>is callable inner".is_callable($succCallback);
        };
        $this->calllll($success);
}
function calllll(callable $foo) {
  $foo("hello");
}

我定义了一个类似

的函数

输出

is callable outer 1
is callable inner

如何引用$succCallback $success内部{{1}}的身体。

3 个答案:

答案 0 :(得分:6)

您必须使用use构造。它允许从父作用域继承变量:

function foo(callable $succCallback) {

        $isCallable = is_callable($succCallback);
        echo "is callable outer ".is_callable($succCallback);
        $success = function($fileInfo) use($succCallback) {
            echo "<br>is callable inner".is_callable($succCallback);
        };
        $this->calllll($success);
}

答案 1 :(得分:2)

$success = function ($fileInfo) use ($succCallback) {
    echo "<br>is callable inner" . is_callable($succCallback);
};

要在匿名函数中包含周围范围内的变量,您需要使用use ()显式扩展其范围。

答案 2 :(得分:2)

要使用父作用域中的变量,请使用use

 $success = function($fileInfo) use ($succCallback) {
        echo "<br>is callable inner".is_callable($succCallback);
    };