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 回答
2

不确定您是否想要一个closure或者您的“内部”功能是否是错字。

如果它是一个单独的方法,那么下面是正确的语法:

class Test 
{

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

  private function Test2() 
  {
    $a = 0;
    return $this->Test3($a)
  }

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

}
于 2013-05-07T15:07:35.443 回答