PHP,扩展类的函数替换

PHP,扩展类的函数替换,php,function,class,extend,Php,Function,Class,Extend,想象一下,我有一节这样的课 class MyClass { private function func1() { // Much code func2(); // Much code } private function func2() { echo 'old class'; } } 是否可以扩展该类并替换其中的函数func2(),以便在新类中,func1()将使用新的func2()。像这样: cl

想象一下,我有一节这样的课

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

如注释所示,使用public或protected。可以找到这两个修饰符之间的差异


将其设置为
受保护的
而不是
私有的
,然后在降序类中重写。将其设置为在新类中受保护的,在扩展类中启用?请查看PHP类中属性可见性的文档:
MyClass
中的@user902100。
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';
    }
}