如何获取 PHP parent 函数以引用 child 中存在的重写函数?

How to get PHP parent functions to reference overridden functions in child if they exist?

给定以下代码:

class A {
    public static function one() {
        return "results from Parent::one";
    }
    public function two() {
        return "Parent::two got info: ".self::one();
    }
}

class B extends A {
    public static function one() {
        return "results from child::one";
    }
}

$a=new B();
print "calling two I get: ". $a->two()."\n";
print "calling one I get: ". $a->one()."\n\n";

我得到以下结果:

calling two I get: Parent::two got info: results from Parent::one

calling one I get: results from child::one

我预计上面的第一个结果是:

calling two I get: Parent::two got info: results from child::one

似乎虽然覆盖有效,但它们不能递归地工作,只能在 child 的直接调用中起作用。有没有办法确保当 child class 从 parent 访问方法时, parent 方法引用存在的被覆盖的方法?

谢谢

您可能正在寻找后期绑定。只需将 self::one() 更改为 static::one() 即可。

return "Parent::two got info: ".static::one();