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

时间:2013-05-07 14:46:15

标签: php class

我尝试调用Test3函数,但返回此错误:“致命错误:调用未定义函数”。

以下是一个例子:

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

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

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

如何调用Test3函数?

2 个答案:

答案 0 :(得分:6)

From PHP DOC

  

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);
    }
}

答案 1 :(得分:0)

不确定您是否需要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;
  }

}