0

想象一下我有这样的课

class MyClass {
    private function func1() {
        // Much code
        func2();
        // Much code
    }
    private function func2() {
        echo 'old class';
    }
}

是否可以扩展这个类并在那里替换函数 func2(),以便在新类中,func1() 将使用新的 func2()。像这样:

class MyNewClass extends MyClass {
    private function func2() {
        echo 'new class';
    }
}

但是我描述的方法仍然会为 MyNewClass 回显“旧类”,但是如何替换父函数呢?

4

2 回答 2

0

听起来您仍然想从旧类运行 func2,但在新类的 func2 中运行更多代码。为此,只需在新类函数中调用父级。像这样:

private function func2() {
    echo 'new class';
    parent::func2();
}
于 2013-09-20T14:51:01.167 回答
0

如前所述,使用 public 或 protected。两个修饰符之间的区别可以在这里找到

class MyClass {
    public function func1() {
        // Much code
        func2();
        // Much code
    }
    public function func2() {
        echo 'old class';
    }
}

class MyNewClass extends MyClass {
    private function func2() {
        echo 'new class';
    }
}
于 2013-09-20T15:10:32.350 回答