PHP调用函数在类方法中的私有函数内

Mar*_*ine 2 php class

我尝试调用Test3函数,但返回此错误:"致命错误:调用未定义的函数".

这是一个例子:

class Test {
    public Test1(){
        return $this->Test2();
    }

    private Test2(){
        $a = 0;
        return Test3($a);

        function Test3($b){
            $b++;
            return $b;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如何调用Test3函数?

Bab*_*aba 6

来自PHP DOC

PHP中的所有函数和类都具有全局范围 - 即使它们是在内部定义的,也可以在函数外部调用它们,反之亦然.

使用闭包 

$test = new Test();
echo $test->Test1();
Run Code Online (Sandbox Code Playgroud)

修改后的类

class Test {

    public function Test1() {
        return $this->Test2();
    }

    private function Test2() {
        $a = 0;

        $Test3 = function ($b) {
            $b ++;
            return $b;
        };

        return $Test3($a);
    }
}
Run Code Online (Sandbox Code Playgroud)