PHP,扩展类的函数替换


PHP, function replacing of extension class

>想象一下我有一个这样的类

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的"旧类",但是如何替换父函数呢?

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

private function func2() {
    echo 'new class';
    parent::func2();
}

如前所述,请使用公共或受保护。两个修饰符之间的区别可以在这里找到

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