PHP - 从子实例中的父函数调用父函数

时间:2017-04-13 14:26:27

标签: php inheritance

A类的bar函数需要调用A类的foo函数。 对于A的实例,$ this-> bar()有效。 对于B的实例,$ this-> bar()不起作用,它会创建一个循环B-foo - A-bar ......

class A {
    function foo() {
        (...)
    }
    function bar() {
        $this->foo();
        (...)
    }
}
class B extends A {
    function foo() {
        parent::bar();
        (...)
    }
    function bar() {
        $this->foo();
        (...)
    }
}

我为“A'”尝试了这样的解决方法。 bar函数,但得到错误:"无法访问parent ::当前类范围没有父级"

class A{
    function bar(){
        switch ( get_class($this) )
        {
            case "A" : $this->foo() ; break;
            case "B" : parent::foo(); break;
        }
    } 
}

知道如何做到这一点吗?

由于

1 个答案:

答案 0 :(得分:1)

您可以使用self

class A {
    function foo() {
        print __METHOD__;
    }
    function bar() {
        print __METHOD__;
        self::foo();
    }
}
class B extends A {
    function foo() {
        print __METHOD__;
        parent::bar();
    }
    function bar() {
        print __METHOD__;
        $this->foo();
    }
}
(new A)->bar();//calls  A::bar A::foo
(new A)->foo();//calls  A::foo
(new B)->bar();//calls  B::bar B::foo A::bar A::foo
(new B)->foo();//calls  B::foo A::bar A::foo