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

jil*_*len 1 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");
}
Run Code Online (Sandbox Code Playgroud)

我定义了这样的函数

输出是

is callable outer 1
is callable inner
Run Code Online (Sandbox Code Playgroud)

我怎么能提到$succCallback里面$success的身体呢.

hin*_*ost 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);
}
Run Code Online (Sandbox Code Playgroud)