4

Test3 関数を呼び出してみましたが、「致命的なエラー: 未定義の関数の呼び出し」というエラーが返されました。

次に例を示します。

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

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

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

Test3 関数を呼び出す方法は?

4

2 に答える 2

9

PHPドキュメントから

PHP のすべての関数とクラスにはグローバル スコープがあります。関数内で定義されている場合でも、関数の外で呼び出すことができ、その逆も可能です。

閉鎖を使用する 

$test = new Test();
echo $test->Test1();

変更されたクラス

class Test {

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

    private function Test2() {
        $a = 0;

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

        return $Test3($a);
    }
}
于 2013-05-07T14:48:04.427 に答える