PHP,函数替换扩展类

时间:2013-09-20 14:39:57

标签: php function class extend

想象一下,我有一个像这样的课程

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

如评论所述,使用public或protected。可以找到两个修饰符之间的差异here

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